Venho brincando armazenando tweets dentro do mongodb, cada objeto fica assim:
{
"_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
}
Como eu escreveria uma consulta que verifica o created_at e encontra todos os objetos entre 18:47 e 19:00? Preciso atualizar meus documentos para que as datas sejam armazenadas em um formato específico?
2010-04-29T00:00:00.000Z
é muito mais fácil do que calcular a mesma data / hora em milissegundos. Você também pode fazer a conversão de fuso horário com bastante facilidade. Além disso, as datas já lidam com coisas como dias bissextos, segundos bissextos e outras esquisitices que você normalmente não deseja.Respostas:
Consultar um intervalo de datas (mês ou dia específico)noMongoDB Cookbooktem uma explicação muito boa sobre o assunto, mas abaixo está algo que eu mesmo tentei e parece funcionar.Com base em meus experimentos, você precisará serializar suas datas em um formato compatível com o MongoDB, porque o seguinte forneceu resultados de pesquisa indesejados.
No segundo exemplo, nenhum resultado era esperado, mas ainda havia um. Isso ocorre porque é feita uma comparação básica de cadeias.
fonte
Esclarecer. O que é importante saber é que:
Aqui está um trecho de código de trabalho, onde fazemos um pouco de manipulação de data para garantir que o Mongo (aqui estou usando o módulo mongoose e deseje resultados para linhas cujo atributo date seja menor que (antes) a data fornecida como parâmetro myDate)) corretamente:
fonte
O MongoDB, na verdade, armazena os milésimos de uma data como int (64), conforme prescrito por http://bsonspec.org/#/specification
No entanto, pode ficar bastante confuso quando você recupera datas, pois o driver do cliente instancia um objeto de data com seu próprio fuso horário local. O driver JavaScript no console mongo certamente fará isso.
Portanto, se você se preocupa com o fuso horário, saiba o que deve ser quando recuperá-lo. Isso não deve importar muito para as consultas, pois ainda equivale à mesma int (64), independentemente do fuso horário em que o objeto de data está (espero). Mas eu definitivamente faria consultas com objetos de data reais (não seqüências de caracteres) e deixava o motorista fazer suas coisas.
fonte
Python e
pymongo
Localizando objetos entre duas datas no Python com
pymongo
na coleçãoposts
(com base no tutorial ):Onde
{"$gte": from_date, "$lt": to_date}
especifica o intervalo em termos dedatetime.datetime
tipos.fonte
Substitua
collection
pelo nome da coleção que você deseja executar a consultafonte
Use este código para encontrar o registro entre duas datas usando
$gte
e$lt
:fonte
Usando com Moment.js e operadores de consulta de comparação
fonte
Converta suas datas no fuso horário GMT enquanto as coloca no Mongo. Dessa forma, nunca há um problema de fuso horário. Em seguida, basta fazer as contas no campo twitter / fuso horário quando você retirar os dados para apresentação.
fonte
Por que não converter a string em um número inteiro no formato YYYYMMDDHHMMSS? Cada incremento de tempo criaria um número inteiro maior e você poderá filtrar os números inteiros em vez de se preocupar em converter para o tempo ISO.
fonte
use $ gte e $ lte para encontrar dados da data no mongodb
fonte
Você também pode verificar isso. Se você estiver usando esse método, use a função de análise para obter valores do Mongo Database:
fonte
fonte
Você também pode verificar isso ou tentar, em vez de usar agregado
fonte
Eu tentei neste modelo de acordo com meus requisitos. Eu preciso armazenar uma data sempre que um objeto for criado posteriormente. Eu quero recuperar todos os registros (documentos) entre duas datas no meu arquivo html. Eu estava usando o seguinte formato mm / dd / aaaa
no meu arquivo py (python) eu o converti em "iso fomate" da seguinte maneira
e salvei na minha coleção dbmongo com "SelectedDate" como campo na minha coleção
recuperar dados ou documentos entre 2 datas que eu usei após a consulta
fonte