我需要搜索文檔集合,但也需要搜索任何子文檔,並在每次出現時將標題爲「en」的字段重命名爲「en-GB」,我試過這段代碼,但一直未能執行JavaScript: RangeError:最大調用堆棧大小超出錯誤。問題是在不知道路徑的情況下使用函數搜索子文檔。Mongodb遞歸搜索
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指向Y,Y指向Z,Z指向X?這會導致堆棧溢出。 – Brandon
您應該使用'x [propt]'而不是'propt'的值,因爲這只是'x'屬性的名稱。 – WiredPrairie