sql >> Databáze >  >> NoSQL >> MongoDB

Upsert více záznamů pomocí MongoDb

Toto – správně – nevloží žádné záznamy s event_id 1 nebo 2, pokud již neexistují

db.foo.update({event_id: { $in: [1,2]}}, {$inc: {visit:1}}, true, true)

Je to proto, že objNew část dotazu (viz http://www.mongodb.org/display /DOCS/Updating#Updating-UpsertswithModifiers ) nemá hodnotu pro pole event_id . V důsledku toho budete potřebovat alespoň X+1 výletů do databáze, kde X je počet event_ids, abyste zajistili, že vložíte záznam, pokud žádný pro konkrétní event_id neexistuje (+1 pochází z dotazu výše , což zvyšuje počítadlo návštěv pro stávající záznamy). Abych to řekl jinak, jak MongoDB ví, že chcete použít hodnotu 2 pro event_id a ne 1? A proč ne 6?

W.r.t. dávkové vložení pomocí ruby, myslím, že je to možné, jak naznačuje následující odkaz - ačkoli jsem použil pouze ovladač Java:Dávkové vložení/aktualizace pomocí Mongoid?



  1. Spring Data Redis Expire Key

  2. Server x vypršel během agregace MongoDB

  3. Laravel :Redis Nebylo možné navázat spojení :[tcp://127.0.0.1:6379]

  4. Redis - Lua tabulky jako návratové hodnoty - proč to nefunguje