Tengo datos como este en mongodb
{
"latitude" : "",
"longitude" : "",
"course" : "",
"battery" : "0",
"imei" : "0",
"altitude" : "F:3.82V",
"mcc" : "07",
"mnc" : "007B",
"lac" : "2A83",
"_id" : ObjectId("4f0eb2c406ab6a9d4d000003"),
"createdAt" : ISODate("2012-01-12T20:15:31Z")
}
¿Cómo hago una consulta db.gpsdatas.find({'createdAt': ??what here??})para que me devuelva el resultado de datos anterior de la base de datos?

Respuestas:
Probablemente desee realizar una consulta de rango, por ejemplo, todos los elementos creados después de una fecha determinada:
Estoy usando
$gte(mayor que o igual), porque esto a menudo se usa para consultas solo de fecha, donde el componente de tiempo es 00:00:00.Si realmente desea encontrar una fecha que sea igual a otra fecha, la sintaxis sería
fuente
ISODateun contenedor para el objeto js Date. Intenta algo como"createdAt" : new Date("2010-01-01"). Sin embargo, por alguna razón, ese código no funciona (para la versión 2.0.2) en la consola Mongo.new Date("2010/01/01");si desea obtener artículos en cualquier lugar en esa fecha, debe comparar dos fechas
Puede crear dos fechas a partir de la primera como esta, para obtener el comienzo del día y el final del día.
fuente
Acabo de implementar algo similar en Mongo v3.2.3 usando Node v0.12.7 y v4.4.4 y utilicé:
Estoy pasando un ISODate (por ejemplo, 2016-04-22T00: 00: 00Z) y esto funciona para una consulta .find () con o sin la función toISOString. ¡Pero cuando se usa en una consulta de coincidencia $ .gregregate () no le gusta la función toISOString!
fuente
Si desea obtener todas las cosas nuevas en los últimos 5 minutos, tendría que hacer algunos cálculos, pero no es difícil ...
Primero cree un índice en la propiedad con la que desea hacer coincidir (incluya la dirección de clasificación -1 para descender y 1 para ascender)
Luego, consulte los documentos creados en los últimos 5 minutos (60 segundos * 5 minutos) ... porque JavaScript
.getTime()devuelve milisegundos que necesita multiplicar por 1000 antes de usarlo como entrada para elnew Date()constructor.Explicación para
new Date(new Date().getTime()-60*5*1000).toISOString()es la siguiente:Primero calculamos "hace 5 minutos":
new Date().getTime()nos da la hora actual en milisegundos5*60*1000- Simplemente multiplico por60segundos para que sea fácil de cambiar. Solo puedo cambiar5a120si quiero 2 horas (120 minutos).new Date().getTime()-60*5*1000nos da1484383878676(hace 5 minutos en ms)Ahora necesitamos alimentar eso en un
new Date()constructor para obtener el formato de cadena ISO requerido por las marcas de tiempo MongoDB.{ $gte: new Date(resultFromAbove).toISOString() }(consulta mongodb .find ())new Date(new Date().getTime()-60*5*1000).toISOString()new Date(new Date().getTime()-60*5*1000).toISOString()Nos da2017-01-14T08:53:17.586ZPor supuesto, esto es un poco más fácil con las variables si está utilizando el controlador node-mongodb-native, pero esto funciona en el shell mongo, que es lo que generalmente uso para verificar las cosas.
fuente
Date.now()lugar denew Date().getTime()También puedes probar:
fuente
Si estás usando Mangosta,
fuente
Encuentra con una fecha específica:
Encuentra con mayor
gteo menorlt:Buscar por rango:
fuente