我需要搜索文档集合以及任何子文档,并在每次出现时将标题为“en”的字段重命名为“en-GB”,我已经尝试过这段代码,但不断出现 JavaScript 执行失败:RangeError:最大调用堆栈大小超出错误。问题是在不知道路径的情况下使用该函数搜索子文档。
remap = function (x) {
if (x.en){
db.products.update({_id:x._id}, {$rename:{"en":"en-GB"}}, false, true); }
for (var propt in x) {
if (Object.prototype.toString.call( x[propt] ) === '[object Array]' ||
Object.prototype.toString.call( x[propt] ) === '[object Object]'){
remap(x[propt]);
}
}
}
我还编写了类似的东西,而是使用数组将其添加到队列中,但需要一种保存子文档路径的方法,例如“document.subdocument”,然后再次通过该函数运行它以检查该字段。