MongoDB: actualiza cada documento en un campo

He reunido un nombre foo hipotéticamente.

Cada instancia de foo tiene un campo llamado lastLookedAt, que es una marca de tiempo de UNIX desde época. Me gustaría poder acceder al cliente MongoDB y configurar esa marca de tiempo para todos los documentos existentes (unos 20,000) en la marca de tiempo actual.

¿Cuál es la mejor manera de manejar esto?

En el shell de Mongo, o con cualquier cliente de Mongodb:

• Para Mongodb> = 3.2:

db.foo.updateMany({}, {$set: {lastLookedAt: Date.now() / 1000}})

Ver http://docs.mongodb.org/manual/tutorial/modify-documents/#update-multiple-documents

  • {} es la condición (la condición vacía coincide con cualquier documento)
  • {$set: {lastLookedAt: Date.now() / 1000}} es lo que quieres hacer

• Para Mongodb> = 2.2:

db.foo.update({}, {$set: {lastLookedAt: Date.now() / 1000}}, { multi: true })

Ver http://docs.mongodb.org/manual/tutorial/modify-documents/#update-multiple-documents

  • {} es la condición (la condición vacía coincide con cualquier documento)
  • {$set: {lastLookedAt: Date.now() / 1000}} es lo que quieres hacer
  • {multi: true} es la opción “actualizar documentos múltiples”

• Para Mongodb <2.2:

db.foo.update({}, {$set: {lastLookedAt: Date.now() / 1000}}, false, true)

Consulte https://web.archive.org/web/20120613233453/http://www.mongodb.org/display/DOCS/Updating

  • {} es la condición (la condición vacía coincide con cualquier documento)
  • {$set: {lastLookedAt: Date.now() / 1000}} es lo que quieres hacer
  • false es para el parámetro “upsert” (inserte si no está presente, o bien actualice, no lo que quiera)
  • true es para el parámetro “multi” (actualización de múltiples registros)

Este código será útil para ti

  Model.update({ 'type': "newuser" }, { $set: { email: "abc@gmail.com", phoneNumber:"0123456789" } }, { multi: true }, function(err, result) { console.log(result); console.log(err); }) 

He estado usando el controlador MongoDB .NET por poco más de un mes. Si tuviera que hacerlo 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 realizaré una Actualización sobre los campos que deseo cambiar. La actualización en Mongo solo afecta el primer documento y para actualizar todos los documentos resultantes de la consulta, uno debe usar el indicador de actualización ‘Multi’. El código de muestra sigue …

 var collection = db.GetCollection("Foo"); var query = Query.GTE("No", 1); // need to construct in such a way that it will give all 20K //docs. var update = Update.Set("timestamp", datetime.UtcNow); collection.Update(query, update, UpdateFlags.Multi);