Mongodb C#按日期时间属性进行筛选

本文关键字:筛选 属性 时间 日期 Mongodb | 更新日期: 2023-09-27 18:20:15

我正在寻找在mongodb中筛选日期-时间字段的方法。这看起来很直接,但我无法在那里的网站或谷歌搜索中找到任何关于这方面的文档。

Bson文档

{
   "_id" : ObjectId("560cd175c771472d780aab3c"),
   "BDay" : ISODate("2005-12-22T18:00:00.000Z"),
   "AddressID" : 987,
   "Age" : 58,
   "Father" : {
       "BDay" : {
         "_csharpnull" : true
       },
       "AddressID" : 0,
       "Age" : 31,
       "Father" : null,
       "ID" : "6e2a9c3b-091a-4171-843e-6cbd0994bfda",
       "Income" : 26794.0000000000000000,
       "Name" : "YLM66LF3",
       "_id" : ObjectId("000000000000000000000000")
   },
   "ID" : "707080e6-8705-48b1-8471-f7af58be6d11",
   "Income" : 5734.0000000000000000,
   "Name" : "XVCDFKF8"
}

我的代码如下。

    var collection = cdb.GetCollection<BsonDocument>("person");
    var bday= new DateTime(2015, 12, 22, 18, 00, 00).ToLocalTime();
    var s = BsonValue.Create(beginTime);
    var filter = Builders<BsonDocument>.Filter.Gte("BDay", s);
    var result = await collection.Find(filter).ToListAsync();

我试过其他方法,但都没有成功。

Mongodb C#按日期时间属性进行筛选

根据API文件,Filter.Gte方法的参数为FieldDefinition<TDocument, TField>, TField
由于FieldDefinition<TDocument, TField>是一个抽象类,所以应该有一个子类。
我的Gte查询示例如下:
(假设您的beginTimeDateTime值)

var filter = Builders<BsonDocument>.Filter.Gte(new StringFieldDefinition<BsonDocument, BsonDateTime>("BDay"), new BsonDateTime(beginTime));