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