Giả sử rằng tôi muốn truy vấn mongo trên dateTime. Tôi có hai biến C# đại diện cho ngày bắt đầu và ngày kết thúc.IsoDate và DateTime trong MongoDB sử dụng C#
1) {2011/10/20 00:00:00}
2) {2011/10/22 00:00:00}
Bây giờ BsonDateTime.Create (datetime) chuyển chúng vào một BSON DateTime tốt quá:
1) 2011-10-20T00: 00: 00 MongoDB.Bson.BsonDateTime
2) 2011-10-22T00: 00: 00 MongoDB.Bson.BsonDateTime
Đây là mã tạo dateTi mes (_value là một chuỗi):
DateTime dateTime;
bool parsed = DateTime.TryParse(_value, out dateTime);
if (!parsed)
throw new FormatException("Wrong format for a query param");
return BsonDateTime.Create(dateTime);
Sau đó, các mã tiếp theo xây dựng các truy vấn:
private QueryComplete MakeQuery(string key, BsonValue value)
{
if (_separatorType == ">=")
return Query.GTE(key, value);
if (_separatorType == "<=")
return Query.LTE(key, value);
return Query.EQ(key, value);
}
Và tôi làm được một giá trị kỳ lạ như vậy trong một truy vấn:
"Sessions.End" : { "$gte" : ISODate("2011-10-19T21:00:00Z"), "$lte" : ISODate("2011-10-21T21:00:00Z") },
Vâng , Tôi google ISODate nhưng không tìm thấy bất kỳ lý do gì tại sao nó phải được thay đổi. Là nó ổn?
Bạn nói rằng bạn có hai C# biến, nhưng bạn đã không được hiển thị như thế nào họ đang khởi tạo hoặc thậm chí những gì hãy nhập chúng. Tôi mạnh mẽ nghi ngờ rằng đó là trái tim của sự vật, nhưng chúng tôi không thể nói mà không nhìn thấy mã. Tôi đoán là bạn đã tạo ra * local * giá trị DateTime thay vì các giá trị UTC. –
@Jon Skeet, đã thêm mã để tạo ngày giờ, UTC là gì? –
Xem câu trả lời của tôi - theo liên kết để biết mô tả về UTC. Về cơ bản đây là một vấn đề múi giờ, tôi nghi ngờ ... –