2013-05-27 20 views
9
public class ScheduledEvent : Event 
{ 
    public DateTimeOffset StartDateTime { get; set; } 
} 

StartDateTime = 2013/05/27 02:09:00 00: 2013/05/26 19:09 PST MongoDB kaydedilen nelerDüzgün MongoDB içinde DateTimeOffset taşıma/kullanma

temsil 00:

> db.ScheduledEvent.find().toArray() 
[ 
     { 
       "_id" : BinData(3,"ZE2p31dh00qb6kglsgHgAA=="), 
       "Title" : "Today 26th at 7:09pm", 
       "Length" : "00:00:00", 
       "MoreInformation" : "http://1.com", 
       "Speakers" : [ 
         { 
           "_id" : BinData(3,"ndzESsQGukmYGmMgKK0EqQ=="), 
           "Name" : "Mathias Brandewinder" 
         } 
       ], 
       "Location" : { 
         "_id" : BinData(3,"AAAAAAAAAAAAAAAAAAAAAA=="), 
         "Name" : "Somwhere " 
       }, 
       "Organizers" : [ 
         { 
           "_id" : BinData(3,"AAAAAAAAAAAAAAAAAAAAAA=="), 
           "Name" : null 
         } 
       ], 
       "CreatedOn" : [ 
         NumberLong("635052144104050898"), 
         0 
       ], 
       "StartDateTime" : [ 
         NumberLong("635052173400000000"), 
         0 
       ] 
     } 
] 

I StartDateTime MongoDB içinde Keneler olarak saklanır fark.

var dateMarker = DateTimeOffset.UtcNow; 
var nextDay = dateMarker.AddDays(1); 

Bu sorgu çalışmaz:

var today = EventRepoistory.All().Where(z => z.StartDateTime >= dateMarker && z.StartDateTime < nextDay).OrderByDescending(z => z.StartDateTime).ToList(); 

Ben aşağıdaki sorguyu gösterir Mongo C# sürücüsü için bir sorgu ekranı ekledi: = 6350521 bağlı

{ "$query" : { "StartDateTime" : { "$gte" : [NumberLong("635052168609734070"), 0], "$lt" : [NumberLong("635053032609734070"), 0] } }, "$orderby" : { "StartDateTime" : -1 } } 

Aşağı 68609734070

Server = 6350521 7340000 Neden MongoDB sorgu şey dönen değildir: 0000

Üst = 6350530 32609734070

Soru bağlı?

db.ScheduledEvent.find ({ "$ sorgusu:" { "StartDateTime": { "$ GTE": [NumberLong ("635052168609734070"), 0], "$ lt": [NumberLong (" 635053032609734070"), 0]}}, "$ orderby": { "StartDateTime": -1}})

İncelenen:

MongoDB and DateTimeOffset type ama LINQ sağlayıcısı o gerekeni yapıyor seams?

çalıştı:

db.ScheduledEvent.find({ "StartDateTime" : { "$gte" : [NumberLong("1"), 0] } } ) 

hiçbir sonuçlar üretir.

+0

Merhaba, hiç bunun dibine gittin mi? Aynı sorun var ... – soupy1976

+0

Bu keşiften sonra projemi beklemeye aldım. Henüz ona geri gelmedim. –

cevap

2

: MongoDB and DateTimeOffset type (eğer söz konusu not gibi)

Ben yaparak bu C# Sürücü ile çalışan var aşağıdaki:

:

var query = Query.GT("StartDateTime.0", startDate.Ticks); 
var json = query.ToJson(); 

bu JSON üretir

Yukarıdaki JSON işleri. Bağlantılı cevaba göre sebep, DateTimeOffset'in bir dizidir.

LINQ kullandığımda (not ettiğiniz gibi) JSON için farklı bir sonuç alırım.

{ "StartDateTime" : { "$gte" : [NumberLong("635251617859913739"), 0], "$lt" : [NumberLong("635251635859913739"), 0] } } 

C# sürücüsünde LINQ sağlayıcısı DateTimeOffset işlemek için düzeltilmesi gereken ancak belirtmek için Sorgu oluşturucu kullanarak olmadığından emin değilim:

var query = from r in col.AsQueryable<MyObjectType>() 
    where r.StartDateTime>= startDate && r.StartDateTime< endDate 
    select r; 

LINQ sorgusu yukarıda aşağıdaki JSON üretir DateTimeOffset dizisinin (StartDateTime.0) ilk elemanı bu çalışmayı almamın tek yoluydu.

+0

Bir yıl sonra durum hala var gibi görünüyor. Aynısını yapmak zorundaydım. –

0

kullanın Sorgunuzda şu sözdizimi: Benzer bir cevap burada bulunan

{ 
    "StartDateTime.0": { 
     "$gte": 635052168609734070 
    } 
}