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

Upsert Multiple Records med MongoDb

Dette vil - korrekt - ikke indsætte nogen poster med event_id 1 eller 2, hvis de ikke allerede eksisterer

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

Dette skyldes, at objNew del af forespørgslen (se http://www.mongodb.org/display /DOCS/Updating#Updating-UpsertswithModifiers ) har ikke en værdi for feltet event_id . Som et resultat vil du have brug for mindst X+1 ture til databasen, hvor X er antallet af hændelses-id'er, for at sikre, at du indsætter en post, hvis der ikke findes en for et bestemt hændelses-id (+1'en kommer fra forespørgslen ovenfor , hvilket øger besøgstælleren for eksisterende poster). For at sige det på en anden måde, hvordan ved MongoDB, at du vil bruge værdi 2 for event_id og ikke 1? Og hvorfor ikke 6?

W.r.t. batch-indsættelse med ruby, jeg tror det er muligt som følgende link antyder - selvom jeg kun har brugt Java-driveren:Batchindsættelse/-opdater ved hjælp af Mongoid?



  1. MongoDB sortering

  2. docker-compose:forbindelse afvist mellem containere, men service tilgængelig fra vært

  3. Returnerer underdokumentarray gennem Meteor / Mongo

  4. ReactiveMongo:Sådan konverteres BSON returneret af FindAndModify til JSON