Dit zal - correct - geen records invoegen met event_id 1 of 2 als ze nog niet bestaan
db.foo.update({event_id: { $in: [1,2]}}, {$inc: {visit:1}}, true, true)
Dit komt omdat de objNew
onderdeel van de zoekopdracht (zie http://www.mongodb.org/display /DOCS/Updating#Updating-UpsertswithModifiers
) heeft geen waarde voor veld event_id
. Als gevolg hiervan hebt u ten minste X+1 trips naar de database nodig, waarbij X het aantal event_ids is, om ervoor te zorgen dat u een record invoegt als er geen bestaat voor een bepaald event_id (de +1 komt van de bovenstaande query , wat de bezoekenteller voor bestaande records verhoogt). Om het op een andere manier te zeggen, hoe weet MongoDB dat je waarde 2 wilt gebruiken voor de event_id en niet 1? En waarom niet 6?
W.r.t. batch-invoeging met ruby, ik denk dat het mogelijk is, zoals de volgende link suggereert - hoewel ik alleen de Java-driver heb gebruikt:Batch invoegen/bijwerken met Mongoid?