39 votes

Comment mettre à jour le champ de date dans la console mongo ?

Par exemple, je veux mettre à jour tous les enregistrements à '2012-01-01' ( "time" : ISODate("2011-12-31T13:52:40Z") ).

db.test.update( { time : '2012-01-01' }, false, true  )

erreur de retour :

Assert failed : need an object
Error("Printing Stack Trace")@:0
()@shell/utils.js:35
("assert failed : need an object")@shell/utils.js:46
(false,"need an object")@shell/utils.js:54
([object Object],false,true)@shell/collection.js:189
@(shell):1

Wed Jan 11 17:52:35 uncaught exception: assert failed : need an object

6voto

webDEVILopers Points 374

Si vous devez convertir un champ de date existant (importé du format MySQL 'yyyy-mm-dd' f.e.) en ISODate, vous pouvez boucler les documents de cette façon :

/usr/bin/mongo yourdbname --eval "db.yourcollectionname.find().forEach(function(doc){doc.yourdatefield = new ISODate(doc.yourdatefield);db.yourcollectionname.save(doc)});"

5voto

Salvador Dali Points 11667

Vous pouvez le faire à l'ancienne en créant une date ISO

  db.test.update({_id : 1}, {
      $set : {
         "time" : new ISODate("your current date")
      }
  });

Mais notez qu'avec le nouveau Mongo 2.6, vous serez en mesure de mettre à jour la date à une date actuelle très facilement avec $ currentDate.

db.test.update( { _id: 1 }, {
  $currentDate: {
      time: true,
  },
})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X