StartDateTime = 5/27/2013 2:09:00 AM +00: 00 repräsentiert den 26/05/2013 07:09 PM PST
Was ist in MongoDB aufgezeichnet:
%Vor%Ich stelle fest, dass StartDateTime als Ticks in MongoDB gespeichert ist.
%Vor%Diese Abfrage funktioniert nicht:
%Vor%Ich habe dem Mongo C # -Treiber eine Abfrageanzeige hinzugefügt, die die folgende Abfrage anzeigt:
%Vor%Untere Grenze = 6350521 68609734070
Server = 6350521 73400000000
Obere Grenze = 6350530 32609734070
Frage: Warum gibt die MongoDB-Abfrage nichts zurück?
db.ScheduledEvent.find ({"$ query": {"StartDateTime": {"$ gte": [NummerLang ("635052168609734070"), 0], "$ lt": [NumberLong ("635053032609734070"), 0]}}, "$ orderby": {"StartDateTime": -1}})
Erforscht:
MongoDB- und DateTimeOffset-Typ , aber es scheint, dass der LINQ-Anbieter tut, was er soll?
Versucht:
%Vor%führt zu keinen Ergebnissen.
Eine ähnliche Antwort finden Sie hier: MongoDB und DateTimeOffset type (wie Sie es in Ihrem Frage)
Ich habe das mit dem C # -Treiber arbeiten lassen, indem ich folgendes gemacht habe:
%Vor%Erzeugt dieses JSON:
%Vor%Der obige JSON funktioniert. Für die verknüpfte Antwort ist der Grund, dass DateTimeOffset ein Array ist.
Wenn ich LINQ benutze, bekomme ich (wie du bemerkst) ein anderes Ergebnis für den JSON.
%Vor%Die obige LINQ-Abfrage erzeugt den folgenden JSON:
%Vor%Ich bin nicht sicher, ob der LINQ-Provider im C # -Treiber repariert werden muss, um DateTimeOffset zu handhaben, aber die Verwendung des Abfrage-Builders, um das erste Element des DateTimeOffset-Arrays (StartDateTime.0) anzugeben, war die einzige Möglichkeit.
Tags und Links c# mongodb mongodb-.net-driver