Muszę przeszukać zbiór dokumentów, ale także wszelkich poddokumentów i zmienić nazwę pola "en" na "en-GB" w każdym wystąpieniu, próbowałem tego kodu, ale ciągle otrzymuję wykonanie kodu JavaScript nie powiodło się: RangeError: przekroczono maksymalny rozmiar stosu wywołań. Problem polega na przeszukiwaniu subdokumentów za pomocą funkcji bez znajomości ścieżki.Wyszukiwanie rekursywne 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]);
}
}
}
Mam też coś podobnego, że zamiast dodaje go do kolejki przy użyciu tablicy napisane, ale potrzebny jest sposób zapisywania ścieżki podrzędne dokumenty, takie jak „document.subdocument”, a następnie uruchomiony ponownie poprzez funkcję, aby sprawdzić pole.
Czy w obiekcie może znajdować się okrągłe odniesienie? X wskazuje na Y, Y wskazuje na Z, Z wskazuje na X? To spowodowałoby przepełnienie stosu. – Brandon
Powinieneś użyć 'x [propt]' zamiast wartości 'propt', ponieważ jest to po prostu nazwa właściwości' x'. – WiredPrairie