避免使用生成器在查询中更改mongo驱动程序的日期

时间:2018-07-11 15:49:24

标签: .net mongodb mongodb-query

我在网上Web服务上查询mongo数据库(版本3.4.4)中的文档时遇到一些问题

似乎日期已转换为UniversalTime,我希望避免这种转换。

例如,使用此代码,我想搜索日期为2018年7月9日的文档

MongoClient mongoClient = new    MongoClient("mongodb://xxx");
IMongoDatabase database = mongoClient.GetDatabase("mydb");
IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("mycollection");

DateTime dateFrom = DateTime.Parse("2018-07-09");
DateTime dateTo = DateTime.Parse("2018-07-10");

var query_filter = Builders<BsonDocument>.Filter.And
(Builders<BsonDocument>.Filter.Gte("utcData", new BsonDateTime(dateFrom)) &
                         Builders<BsonDocument>.Filter.Lte("utcData", new BsonDateTime(dateTo))
                     );

            System.Diagnostics.Debug.Write(query_filter.Render(collection.DocumentSerializer,
                          collection.Settings.SerializerRegistry).ToString());

但这是发送到服务器的查询

{ "utcData" : { "$gte" : ISODate("2018-07-08T22:00:00Z"), "$lte" : ISODate("2018-07-09T22:00:00Z") } }

为什么从日期中减去一天?有什么方法可以避免日期发生任何变化?

谢谢。

1 个答案:

答案 0 :(得分:0)

这个创建utc日期:

DateTime.Parse("2018-07-09", CultureInfo.InvariantCulture , System.Globalization.DateTimeStyles.AssumeUniversal);