Aktualizacja: Jeśli wszystko, co musisz zrobić, to zmienić strukturę dokumentu bez zmiany wartości, zapoznaj się z odpowiedzią gipseta, aby uzyskać dobre rozwiązanie.
Zgodnie z (obecnie niedostępnym) komentarzem na stronie dokumentacji aktualizacji, nie można odwoływać się do właściwości bieżącego dokumentu z poziomu update()
.
Będziesz musiał przejść przez wszystkie dokumenty i zaktualizować je w ten sposób:
db.events.find().snapshot().forEach(
function (e) {
// update document, using its own properties
e.coords = { lat: e.lat, lon: e.lon };
// remove old properties
delete e.lat;
delete e.lon;
// save the updated document
db.events.save(e);
}
)
Taka funkcja może być również użyta w zadaniu map-reduce lub po stronie serwera db.eval()
pracę, w zależności od Twoich potrzeb.