MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Przekształć wiele rekordów za pomocą MongoDb

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?



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przechowywanie relacji przyjaciół w MongoDB?

  2. Jak odwrócić agregację rozwijania?

  3. Dlaczego moje identyfikatory MongooseJS ObjectId nie przechodzą testu równości?

  4. Przełącz wartość logiczną za pomocą mongoDB

  5. Sterownik Mongo db c# - jak dołączyć za pomocą id w kolekcji?