MongoDB + nodejs: ¿cómo consultar los campos ISODate?

Estoy usando nodejs con el controlador node-mongodb-native ( http://mongodb.github.io/node-mongodb-native/ ).

Tengo documentos con una propiedad de fecha almacenada como tipo ISODate .

A través de nodejs, estoy usando esta consulta:

 db.collection("log").find({ localHitDate: { '$gte': '2013-12-12T16:00:00.000Z', '$lt': '2013-12-12T18:00:00.000Z' } }) 

No devuelve nada. Para que funcione, necesito hacer lo siguiente:

 db.collection("log").find({ localHitDate: { '$gte': ISODate('2013-12-12T16:00:00.000Z'), '$lt': ISODate('2013-12-12T18:00:00.000Z') } }) 

Pero ISODate no se reconoce en mi código nodejs.

Entonces, ¿cómo puedo realizar una consulta en los campos de fecha de mongo a través de mi progtwig nodejs?

Gracias

Puede usar la new Date('2013-12-12T16:00:00.000Z') en node.js ;

new es a must, porque Date () ya se usa para devolver una cadena de fecha.

ISODate está concebido en mongodb, puede usarlo en la consola mongodb, pero puede ser diferente para diferentes lenguajes de progtwigción.

Puedes usar esto, para mi funcionó perfectamente.

 //lets require/import the mongodb native drivers. var mongodb = require('mongodb'); //We need to work with "MongoClient" interface in order to connect to a mongodb server. var MongoClient = mongodb.MongoClient; // Connection URL. This is where your mongodb server is running. var url = 'mongodb://localhost/klevin'; // Use connect method to connect to the Server MongoClient.connect(url, function (err, db) { if (err) { console.log('Unable to connect to the mongoDB server. Error:', err); } else { //HURRAY!! We are connected. :) console.log('Connection established to', url); // Get the documents collection var collection = db.collection('frames'); //We have a cursor now with our find criteria var cursor = collection.find({ tv: 'tematv', date_created: {"$gte": new Date("2015-10-01T00:00:00.000Z") , "$lt": new Date("2017-03-13T16:17:36.470Z") }}); //We need to sort by age descending cursor.sort({_id: -1}); //Limit to max 10 records cursor.limit(50); //Skip specified records. 0 for skipping 0 records. cursor.skip(0); //Lets iterate on the result cursor.each(function (err, doc) { if (err) { console.log(err); } else { console.log('Fetched:', doc); if(doc !== null){ } } }); } }); 

Necesitamos usar la nueva fecha () es la mejor opción para obtener los datos.

 db.getCollection('orders').aggregate([ { '$match': { $and: [ { status: 'UNASSIGNED' }, { plannedDeliveryDate: { '$eq': new Date('2017-10-09') } } ] } }, { $lookup: { from: "servicelocations", localField: "serviceLocationId", foreignField: "serviceLocationId", as: "locations" } }, { $unwind: "$locations" }, { "$project": { "accountId": 1, "orderId": 1, "serviceLocationId": 1, "orderDate": 1, "description": 1, "serviceType": 1, "orderSource": 1, "takenBy": 1, "plannedDeliveryDate": 1, "plannedDeliveryTime": 1, "actualDeliveryDate": 1, "actualDeliveryTime": 1, "deliveredBy": 1, "size1": 1, "size2": 1, "size3": 1, "jobPriority": 1, "cancelReason": 1, "cancelDate": 1, "cancelBy": 1, "reasonCode": 1, "reasonText": 1, "status": 1, "lineItems": 1, "locations": { "lng": "$locations.location.lng", "lat": "$locations.location.lat" } } } ]) 
Intereting Posts