sql >> Base de Datos >  >> NoSQL >> MongoDB

Actualizar múltiples registros con MongoDb

Esto, correctamente, no insertará ningún registro con event_id 1 o 2 si aún no existen

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

Esto se debe a que objNew parte de la consulta (ver http://www.mongodb.org/display /DOCS/Updating#Updating-UpsertswithModifiers ) no tiene un valor para el campo event_id . Como resultado, necesitará al menos X+1 viajes a la base de datos, donde X es el número de event_ids, para asegurarse de insertar un registro si no existe uno para un event_id en particular (el +1 proviene de la consulta anterior , lo que aumenta el contador de visitas para los registros existentes). Para decirlo de otra manera, ¿cómo sabe MongoDB que desea usar el valor 2 para event_id y no 1? ¿Y por qué no 6?

W.r.t. inserción por lotes con ruby, creo que es posible como sugiere el siguiente enlace, aunque solo he usado el controlador Java:¿Insertar/actualizar lote usando Mongoid?