Tengo un nombre recogido foo
hipotéticamente.
Cada instancia de foo
tiene un campo llamado lastLookedAt, que es una marca de tiempo UNIX desde época. Me gustaría poder pasar por el cliente MongoDB y establecer esa marca de tiempo para todos los documentos existentes (aproximadamente 20,000 de ellos) en la marca de tiempo actual.
¿Cuál es la mejor manera de manejar esto?
Respuestas:
Independientemente de la versión, para su ejemplo, el
<update>
es:Sin embargo, dependiendo de su versión de MongoDB, la consulta se verá diferente. Independientemente de la versión, la clave es que la condición vacía
{}
coincidirá con cualquier documento . En el shell Mongo, o con cualquier cliente MongoDB:$ versión> = 3.2 :
{}
es la condición (la condición vacía coincide con cualquier documento)3.2> $ versión> = 2.2 :
{}
es la condición (la condición vacía coincide con cualquier documento){multi: true}
es la opción "actualizar varios documentos"$ versión <2.2 :
{}
es la condición (la condición vacía coincide con cualquier documento)false
es para el parámetro " upsert "true
es para el parámetro "multi" (actualizar múltiples registros)fuente
Este código te será útil
fuente
He estado usando el controlador MongoDB .NET por poco más de un mes. Si lo hiciera usando el controlador .NET, usaría el método Update en el objeto de colección. Primero, construiré una consulta que me proporcionará todos los documentos que me interesan y haré una Actualización en los campos que quiero cambiar. La actualización en Mongo solo afecta al primer documento y para actualizar todos los documentos resultantes de la consulta uno necesita usar el indicador de actualización 'Multi'. El código de muestra sigue ...
fuente