To - poprawnie - nie wstawi żadnych rekordów o identyfikatorze zdarzenia 1 lub 2, jeśli jeszcze nie istnieją
db.foo.update({event_id: { $in: [1,2]}}, {$inc: {visit:1}}, true, true)
Dzieje się tak, ponieważ objNew
część zapytania (patrz http://www.mongodb.org/display /DOCS/Updating#Upserts-UpsertswithModifiers
) nie ma wartości dla pola event_id
. W rezultacie będziesz potrzebować co najmniej X+1 podróży do bazy danych, gdzie X to liczba identyfikatorów zdarzeń, aby upewnić się, że wstawisz rekord, jeśli nie istnieje dla konkretnego identyfikatora zdarzenia (+1 pochodzi z powyższego zapytania , co zwiększa licznik odwiedzin dla istniejących rekordów). Mówiąc inaczej, skąd MongoDB wie, że chcesz użyć wartości 2 dla event_id, a nie 1? A dlaczego nie 6?
W.r.t. wstawianie partii za pomocą ruby, myślę, że jest to możliwe, jak sugeruje poniższy link - chociaż używałem tylko sterownika Java:Wsadowe wstawianie/aktualizowanie przy użyciu Mongoid?