web-dev-qa-db-fra.com

Ajouter / soustraire des jours à ISODate dans MongoDB Shell

J'ai une requête où j'ai besoin d'obtenir des événements un jour avant ou après une date spécifique. J'ai besoin d'ajouter ou de soustraire un jour à cette variable ISODate. Voici ma requête:

db.event.find().forEach( function (x) {

  print("x : " + x.EventID + ", " + x.ISODate); 
  db.events.find( {
   "$or" : [{
       "StartDate" : { "$gte" : x.ISODate } // Here i need to subtract one day
       }, {
           "EndDate": { "$lt" : x.ISODate} // Here i need to add one day
           }]
}).forEach(function(otherDay) {
        print("x.EventID : " + x.EventID + ", other.Date : " + otherDay.StartDate + " - " + otherDay.EndDate);
      });

});

Comment puis-je ajouter ou soustraire des jours à une variable ISODate dans le shell mongodb?

19
cuneytyvz

Pas une réponse exacte mais liée.

J'avais besoin d'incrémenter un champ de date pour tous les éléments de ma collection MongoDB en place.

La requête ci-dessous ajoutera 1 jour à myDateField dans myCollection .

db.myCollection.find().snapshot().forEach(
    function (elem) {
        db.myCollection.update(
            {
                _id: elem._id
            },
            {
                $set: {
                    myDateField: new Date(elem.myDateField.getTime() + 1*24*60*60000)
                }
            }
        );
    }
);

1 day = 1*24*60*60000 = 1 x 24 hours x 60 minutes x 60 seconds x 1000 milliseconds
  • Utilisez moins si vous devez soustraire/remonter dans le temps.
18
cenk