MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Upsert più record con MongoDb

Questo - correttamente - non inserirà alcun record con event_id 1 o 2 se non esistono già

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

Questo perché objNew parte della query (vedi http://www.mongodb.org/display /DOCS/Aggiornamento#Aggiornamento-Aggiornamenti con modificatori ) non ha un valore per il campo event_id . Di conseguenza, avrai bisogno di almeno X+1 viaggi nel database, dove X è il numero di event_id, per assicurarti di inserire un record se non esiste per un particolare event_id (il +1 deriva dalla query sopra , che aumenta il contatore di visite per i record esistenti). Per dirlo in un modo diverso, come fa MongoDB a sapere che vuoi utilizzare il valore 2 per event_id e non 1? E perché non 6?

Wrt inserimento batch con ruby, penso sia possibile come suggerisce il seguente link, anche se ho usato solo il driver Java:Inserimento/aggiornamento batch utilizzando Mongoid?