He estado jugando almacenando tweets dentro de mongodb, cada objeto se ve así:
{
"_id" : ObjectId("4c02c58de500fe1be1000005"),
"contributors" : null,
"text" : "Hello world",
"user" : {
"following" : null,
"followers_count" : 5,
"utc_offset" : null,
"location" : "",
"profile_text_color" : "000000",
"friends_count" : 11,
"profile_link_color" : "0000ff",
"verified" : false,
"protected" : false,
"url" : null,
"contributors_enabled" : false,
"created_at" : "Sun May 30 18:47:06 +0000 2010",
"geo_enabled" : false,
"profile_sidebar_border_color" : "87bc44",
"statuses_count" : 13,
"favourites_count" : 0,
"description" : "",
"notifications" : null,
"profile_background_tile" : false,
"lang" : "en",
"id" : 149978111,
"time_zone" : null,
"profile_sidebar_fill_color" : "e0ff92"
},
"geo" : null,
"coordinates" : null,
"in_reply_to_user_id" : 149183152,
"place" : null,
"created_at" : "Sun May 30 20:07:35 +0000 2010",
"source" : "web",
"in_reply_to_status_id" : {
"floatApprox" : 15061797850
},
"truncated" : false,
"favorited" : false,
"id" : {
"floatApprox" : 15061838001
}
¿Cómo escribiría una consulta que verifique el created_at y encuentre todos los objetos entre las 18:47 y las 19:00? ¿Necesito actualizar mis documentos para que las fechas se almacenen en un formato específico?
2010-04-29T00:00:00.000Z
es mucho más fácil que calcular la misma fecha / hora en milisegundos. También puede hacer la conversión de zona horaria con bastante facilidad. Además, las fechas ya manejan cosas como días bisiestos, segundos bisiestos y otras rarezas que generalmente no desea manejar usted mismo.Respuestas:
Consultar un intervalo de fechas (mes o día específico)en ellibro de cocina de MongoDBtiene una muy buena explicación al respecto, pero a continuación hay algo que probé yo mismo y parece funcionar.Según mis experimentos, necesitará serializar sus fechas en un formato compatible con MongoDB, porque lo siguiente dio resultados de búsqueda no deseados.
En el segundo ejemplo no se esperaban resultados, pero todavía se obtuvo uno. Esto se debe a que se realiza una comparación básica de cadenas.
fuente
Para aclarar. Lo importante es saber que:
Aquí hay un fragmento de código que funciona, donde hacemos un poco de manipulación de la fecha para asegurar que Mongo (aquí estoy usando el módulo de mangosta y quiero resultados para las filas cuyo atributo de fecha es menor que (antes) la fecha dada como myDate param) puede manejar correctamente:
fuente
MongoDB en realidad almacena los millis de una fecha como int (64), según lo prescrito por http://bsonspec.org/#/specification
Sin embargo, puede ser bastante confuso cuando recupera fechas, ya que el controlador del cliente creará una instancia de un objeto de fecha con su propia zona horaria local. El controlador de JavaScript en la consola mongo ciertamente hará esto.
Entonces, si te interesan tus zonas horarias, asegúrate de saber lo que se supone que debe ser cuando lo recuperes. Esto no debería importar tanto para las consultas, ya que aún equivaldrá al mismo int (64), independientemente de la zona horaria en la que se encuentre su objeto de fecha (espero). Pero definitivamente haría consultas con objetos de fecha reales (no cadenas) y dejaría que el controlador haga lo suyo.
fuente
Python y
pymongo
Encontrar objetos entre dos fechas en Python con una
pymongo
colecciónposts
(basada en el tutorial ):Donde
{"$gte": from_date, "$lt": to_date}
especifica el rango en términos dedatetime.datetime
tipos.fuente
Reemplace
collection
con el nombre de la colección que desea ejecutar la consultafuente
Use este código para buscar el registro entre dos fechas usando
$gte
y$lt
:fuente
Uso con Moment.js y operadores de consulta de comparación
fuente
Convierta sus fechas a la zona horaria GMT a medida que las introduce en Mongo. De esa manera nunca hay un problema de zona horaria. Luego, haga los cálculos en el campo twitter / zona horaria cuando retire los datos para presentarlos.
fuente
¿Por qué no convertir la cadena a un entero de la forma AAAAMMDDHHMMSS? Cada incremento de tiempo crearía un número entero más grande, y puede filtrar los números enteros en lugar de preocuparse por la conversión al tiempo ISO.
fuente
use $ gte y $ lte para buscar datos entre fechas en mongodb
fuente
También puedes ver esto. Si está utilizando este método, utilice la función de análisis para obtener valores de la base de datos Mongo:
fuente
fuente
También puede verificar esto o probar en lugar de usar agregado
fuente
Lo intenté en este modelo según mis requisitos. Necesito almacenar una fecha cada vez que se crea un objeto más tarde. Quiero recuperar todos los registros (documentos) entre dos fechas en mi archivo html. Estaba usando el siguiente formato mm / dd / aaaa
en mi archivo py (python) lo convertí en "iso fomate" de la siguiente manera
y guardado en mi colección dbmongo con "SelectedDate" como campo en mi colección
para recuperar datos o documentos entre 2 fechas utilicé la siguiente consulta
fuente