node.js - new - MongoDB+nodejs: ¿cómo consultar campos de ISODate?
new date in mongodb (3)
Puede usar la new Date(''2013-12-12T16:00:00.000Z'')
en node.js
;
new
es obligatorio, porque Date () ya se usa para devolver la cadena de fecha.
ISODate se concibe en mongodb, puede usarlo en la consola de mongodb, pero puede ser diferente para un lenguaje de programación diferente.
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 en su lugar:
db.collection("log").find({
localHitDate: {
''$gte'': ISODate(''2013-12-12T16:00:00.000Z''),
''$lt'': ISODate(''2013-12-12T18:00:00.000Z'')
}
})
Pero ISODate
no está reconocido en mi código nodejs.
Entonces, ¿cómo puedo hacer una consulta contra los campos de fechas mongo a través de mi programa nodejs?
Gracias
Puedes usar esto, para mí 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"
}
}
}
])