Richtiges Verwenden / Behandeln von DateTimeOffset in MongoDB

9
%Vor%

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.

    
Petar Vučetin 27.05.2013, 02:15
quelle

2 Antworten

2

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.

    
dsandor 12.01.2014, 22:51
quelle
0

Verwenden Sie die folgende Syntax in Ihrer Abfrage:

%Vor%     
chrisjsherm 20.09.2013 14:43
quelle

Tags und Links