Ini - dengan benar - tidak akan menyisipkan catatan apa pun dengan event_id 1 atau 2 jika belum ada
db.foo.update({event_id: { $in: [1,2]}}, {$inc: {visit:1}}, true, true)
Ini karena objNew
bagian dari kueri (lihat http://www.mongodb.org/display /DOCS/Updating#Updating-UpsertswithModifiers
) tidak memiliki nilai untuk bidang event_id
. Akibatnya, Anda memerlukan setidaknya X+1 perjalanan ke database, di mana X adalah jumlah event_id, untuk memastikan bahwa Anda memasukkan catatan jika tidak ada untuk event_id tertentu (+1 berasal dari kueri di atas , yang meningkatkan penghitung kunjungan untuk catatan yang ada). Untuk mengatakannya dengan cara yang berbeda, bagaimana MongoDB tahu Anda ingin menggunakan nilai 2 untuk event_id dan bukan 1? Dan mengapa tidak 6?
Wrt penyisipan batch dengan Ruby, saya pikir itu mungkin seperti yang disarankan tautan berikut - meskipun saya hanya menggunakan driver Java:Sisipkan batch/perbarui menggunakan Mongoid?