Datum Abfrage mit ISODate in Mongodb scheint nicht zu funktionieren
Ich bin anscheinend nicht in der Lage sein, um sogar die grundlegendsten Datum, Abfrage zur Arbeit in MongoDB. Mit einem Dokument, das wie folgt aussieht:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
Sowie eine Abfrage, die wie folgt aussieht:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
Bekomme ich 0 Ergebnisse Ausführung:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
Eine Idee warum das nicht funktioniert?
Referenz, diese Abfrage wird hergestellt von Spring MongoTemplate also ich habe keine direkte Kontrolle über die Abfrage, die letztlich gesendet zu MongoDB.
(P. S.)
> db.version()
2.4.7
Dank!
InformationsquelleAutor der Frage Jason Polites | 2013-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl
$date
ist ein Teil von MongoDB JSON Erweitert und das ist, was Sie erhalten als Standard mitmongoexport
ich glaube nicht, können Sie wirklich verwenden Sie es als Teil der Abfrage.Wenn Sie versuchen, genaue Suche mit
$date
wie unten:bekommst du Fehler:
Versuchen Sie dies:
oder (folgenden Kommentare von @user3805045):
ISODate
können auch erforderlich, um zu vergleichen, Termine ohne Uhrzeit (festgestellt durch @MattMolnar).Laut Datentypen in der mongo Shell beiden sollten äquivalent sein:
und mit
ISODate
sollte noch ein Date-Objekt zurück.{"$date": "ISO-8601 string"}
verwendet werden kann, wenn der strikte JSON-Repräsentation erforderlich ist. Ein mögliches Beispiel ist die Hadoop-connector.InformationsquelleAutor der Antwort zero323
Aus der MongoDB Kochbuch Seite Kommentare:
Dieser arbeitete für mich. Im gesamten Kontext der folgende Befehl ruft jeden Datensatz, in dem die
dt
Feld "Datum" ist ein date am 2013-10-01 (YYYY-MM-DD) Zulu:InformationsquelleAutor der Antwort Steve HHH
Versuchen Sie dies:
InformationsquelleAutor der Antwort Jabba
Im json-strict-Modus, müssen Sie halten Sie die Reihenfolge:
Einzige Sache, die gearbeitet, um zu definieren, meine Suchanfragen auf mlab.com.
InformationsquelleAutor der Antwort 3vangelos
Ich bin mit robomongo wie die mongodb-client-gui und der unten für mich gearbeitet
Auf der app-Seite bin ich mit nodejs basiert mongodb-Treiber(v1.4.3),verwendet die Anwendung datepicker in der ui, die gibt date wie YYYY-mm-dd, das ist dann angefügt, mit Standard-Zeit 00:00:00 und dann auf die
new Date()
Konstruktor und dann geliefert, um die mongodb Kriterien Objekt,ich denke, der Treiber konvertiert das Datum in ISO-Datum und die Abfrage funktioniert und liefert die gewünschte Ausgabe, aber die gleichenew Date()
Konstruktor funktioniert nicht oder zeigen gleiche Ausgabe auf robo mongo,für die die gleichen Kriterien,was schon seltsam ist,da ich robomongo, um cross-check meine Kriterien Objekte.In der Erwägung, dass die Standard-cli mongoshell funktioniert gut mit beiden
ISODate
undnew Date()
InformationsquelleAutor der Antwort siddharthrc
In die MongoDB-shell:
In meinem nodeJS-code ( mit Mungo )
Ich bin querying meinen sensor Veranstaltungen Sammlung die Rückgabe von Werten, wo die 'von' - Feld größer ist als das angegebene Datum
InformationsquelleAutor der Antwort lewma
dies ist mein Dokument
will ich jetzt jeden 27ten Datum Dokument.so habe ich diese....
dieser arbeitete für mich.
InformationsquelleAutor der Antwort vipin sharma