我需要搜索一组文档,同时还要搜索所有子文档,并将标题为“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”)并再次通过函数运行以检查该字段的方法。
x[propt]
而不是propt
的值,因为propt
只是x
属性的名称。 - WiredPrairie