2011-09-12 17 views
8

Questo è stato chiesto molto, ma sto ancora affrontando alcuni problemi con esso.Data query in Mongoide

Ho la data che ricevo e stavo memorizzando come Data. Devo interrogare su Maggiore di e Meno di, quindi l'ho cambiato in Ora, l'ho provato di nuovo, ma sto ottenendo risultati strani.

sto facendo questo

Class.where(:event_date.gt => Time.parse(Date.today)) 

e sto ottenendo vecchi dischi, 1940, 1960 e altri. Ho provato a convertire il tempo aggiungendo .utc alla fine, confrontandolo solo con Date.today, ma finora non è stato risolto il problema. Questo è il selettore viene generato da Mongoid

selector: {:date_utc=>{"$gte"=>Sat Sep 10 21:00:00 UTC 2011}}, 

ricevo la data in questo formato "2011-09-11" e conservarlo in campo Time. Ho provato a paragonarlo al Time utc, senza fortuna.

Qualche idea? Sto usando Mongoid 2.0.2. Le versioni successive sembrano incompatibili con altre estensioni che sto usando.

[UPDATE]

Quindi il problema è con le vecchie date prima del 1970 a quanto pare. Come faccio a trattare con loro è la domanda ora.

risposta

2

Questo è un bug noto in Mongo. Vedi ISSUE 405

La ragione è che Mongo usa un numero senza segno per memorizzare le date, quindi qualsiasi cosa prima che l'epoca scenda nel lontano futuro.

In seguito a questo problema è stato corretto per la versione 2.0 stabile rilasciata oggi. L'aggiornamento a questa versione dovrebbe risolvere il tuo problema.

+0

Grazie. Visto che il problema è stato aperto dall'anno scorso, mi sembra piuttosto fortunato. Ciò significa che devo aggiornare anche Mongoid? Questo sembra sollevare problemi per me –