Convertir une date au format MongoDB ISODate en JavaScript à l'aide de Moment JS
MongoDB utilise ISODate comme type de date principal. Si vous souhaitez insérer un objet date dans une collection MongoDB, vous pouvez utiliser la méthode Date() méthode des coquilles.
Vous pouvez spécifier une date particulière en passant une chaîne de date ISO-8601 avec une année comprise entre 0 et 9999 à la fonction nouvelle Date() ou la fonction ISODate(). Ces fonctions acceptent les formats suivants :
-
nouvelle Date(
"<YYYY-mm-dd>"
) renvoie l'ISODate avec la date spécifiée.
-
nouvelle Date(
"<YYYY-mm-ddTHH:MM:ss>"
) spécifie la date dans le fuseau horaire local du client et renvoie l'ISODate avec la date spécifiée en UTC.
-
nouvelle Date(
"<YYYY-mm-ddTHH:MM:ssZ>"
) spécifie la date en UTC et renvoie l'ISODate avec la date spécifiée en UTC.
- new Date() spécifie la date en millisecondes depuis l'époque Unix (1er janvier 1970) et renvoie l'instance ISODate résultante.
Si vous écrivez du code en JavaScript et que vous voulez passer un objet date JavaScript et l'utiliser avec le client MongoDB, la première chose à faire est de convertir la date JavaScript au format de date MongoDB (ISODate). Voici comment procéder.
var today = moment(new Date()).format('YYYY-MM-DD[T00:00:00.000Z]');
console.log("Next day -- " + (reqDate.getDate() + 1))
var d = new Date();
d.setDate(reqDate.getDate() + 1);
var tomorrow = moment(d).format('YYYY-MM-DD[T00:00:00.000Z]');
Vous pouvez transmettre les objets today et tomorrow aux requêtes MongoDB avec la nouvelle méthode shell Date().
MongoClient.connect(con, function (err, db) {
if (err) throw err
db.collection('orders').find({ "order_id": store_id, "orderDate": {
"$gte": new Date(today), "$lt": new Date(tomorrow)}
}).toArray(function (err, result) {
console.log(result);
if (err) throw err
res.send(result);
})
})