Mam kolekcję około 1 miliona rekordów z 20 polami każdego. Muszę zaktualizować pole liczby całkowitej flag
w każdym rekordzie (dokumencie) przypisującym losowo 1 lub 2 do tego pola flag
. Jak to zrobić podczas iteracji kursora nad całą kolekcją? To nie wydaje się być dobrym pomysłem, aby szukać raz drugi dla obiektu już znaleziona przez MongoDB, tylko żeby być w stanie zaktualizować go:Java, MongoDB: Jak zaktualizować każdy obiekt podczas iterowania ogromnej kolekcji?
DBCursor cursor = coll.find();
try {
while(cursor.hasNext()) {
BasicDBObject obj = (BasicDBObject) cursor.next();
...
coll.update(query,newObj)
}
} finally {
cursor.close();
}
Jak zaktualizować pola w każdym dokumencie ogromnej kolekcji MongoDB z różnymi wartościami wydajnie?
Możesz zaktualizować wszystkie dokumenty (które pasują do określonego warunku) w jednym zapytaniu z flagą "wiele" w poleceniu 'update' ustawionym na true. Sprawdź to: http://stackoverflow.com/questions/4146452/mongodb-what-is-the-fastest-way-to-update-all-records-in-a-collection –
Nie mogę użyć flagi 'multi' ponieważ aktualizuję każdy dokument o unikalnej wartości. To nie jest to samo, co aktualizacja wielu dokumentów o jednej i tej samej wartości. –