모든 문서에서 "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
'propt'의 값보다는'x [propt]'를 사용해야합니다.'x'의 속성의 이름 일뿐입니다. – WiredPrairie