varios tutorial tipos sintaxis operador insertar documentos datos consultas clausula basicas anidadas mongodb

tutorial - Consulta para obtener datos de los Ășltimos X minutos con Mongodb.



sintaxis mongodb (3)

Para la parte de 18 minutos, eso no es realmente sobre MongoDB, sino sobre JavaScript y lo que está disponible en la consola de Mongo:

query = { timestamp: { // 18 minutes ago (from now) $gt: new Date(ISODate().getTime() - 1000 * 60 * 18) } }

Funciona en el shell de Mongo, pero utilizar controladores de Mongo para otros idiomas sería realmente diferente.

Para "proyectar" sobre un esquema más pequeño con valores y marcas de tiempo:

projection = { _id: 0, value: 1, timestamp: 1, }

Aplicando tanto:

db.mycol.find(query, projection).sort({timestamp: 1});

Bueno, eso todavía no es un "conjunto" ya que puede haber duplicados. Para deshacerse de ellos, puede usar $group del marco de agregación:

db.mycol.aggregate([ {$match: query}, {$group: { _id: { value: "$value", timestamp: "$timestamp", } }}, {$project: { value: "$_id.value", timestamp: "$_id.timestamp", }}, {$sort: {timestamp: 1}}, ])

Estoy empezando con mongodb, y estoy intentando consultar a mi db que tiene este formato de documento:

{ "_id" : ObjectId("520b8b3f8bd94741bf006033"), "value" : 0.664, "timestamp" : ISODate("2013-08-14T13:48:35Z"), "cr" : ISODate("2013-08-14T13:50:55.834Z") }

Puedo obtener los últimos registros de una fecha y hora con esta consulta:

> db.mycol.find({timestamp:{$gt: ISODate("2013-08-14T13:48:00Z")}}).sort({x:1});

Pero estoy tratando de obtener un conjunto con los campos de valor y las marcas de tiempo de hace 18 minutos, ¿cómo puedo crear una consulta para esto? Gracias a todos por su paciencia ...


Wow, gracias a @Alistair_Nelson pude obtener los datos de hace n minutos, por ejemplo, para obtener los últimos 18 minutos de ISODate ("2013-08-14T14: 00: 00Z"):

db.mycol.find({timestamp:{$gt: new Date(ISODate("2013-08-14T14:00:00Z")-18*60000)}})

Para obtener solo los campos que necesito:

db.mycol.find({timestamp:{$gt: new Date(ISODate("2013-08-14T14:00:00Z")-18*60000)}},{value:1,timestamp:1, _id:0})


puede acceder a los datos de la marca de tiempo actual desde mongodb usando nodejs

const collection1 = dbo.collection(''customers''); var dateq = new Date(); collection1.find({ "Timestamp" : { $gt: new Date(dateq.getTime() - 6000)} }).toArray(function(err , docs){ console.log(docs); }

código final