如何获取日期范围内的MongoDB条目,包括限制?

如何获取日期范围内的MongoDB条目,包括限制?,mongodb,asp.net-core,Mongodb,Asp.net Core,在Mongo DB中,我有以下条目: > db.DomainObjects.find() // [...] { "_id" : ObjectId("6..3"), "lev" : 7, "date" : ISODate("2021-02-01T00:00:00Z"), "val" : 29.1 } { "_id" : ObjectId("6.

在Mongo DB中,我有以下条目:

> db.DomainObjects.find()
// [...]
{ "_id" : ObjectId("6..3"), "lev" : 7, "date" : ISODate("2021-02-01T00:00:00Z"), "val" : 29.1 }
{ "_id" : ObjectId("6..4"), "lev" : 7, "date" : ISODate("2021-02-02T00:00:00Z"), "val" : 20.3 }
{ "_id" : ObjectId("6..5"), "lev" : 7, "date" : ISODate("2021-02-05T00:00:00Z"), "val" : 15.8 }
// [...]
在ASP.NET核心服务类中,我使用安装了以下版本的Mongo DB驱动程序对集合进行了引用:

以下是如何创建引用:

    public DomainService(IDomainDatabaseSettings settings)
    {
        var client = new MongoClient(settings.ConnectionString);
        var database = client.GetDatabase(settings.DatabaseName);
        _repo = database.GetCollection<Domain>(settings.DomainCollectionName);
    }
我使用以下GET请求:

https://localhost:45645/api/DomainObjects/7/?dateFrom=2021-02-01&dateTo=2021-02-02
然而,我只得到开始的条目,包括下限,上限的条目被排除在外

为完整起见,控制器如下所示:

    [HttpGet("{lev:int}")]
    public ActionResult<List<Domain>> Get(int lev, [FromQuery] DateTime? dateFrom = null, [FromQuery] DateTime? dateTo = null) {
        if (!dateFrom.HasValue) {
            dateFrom = DateTime.MinValue;
            return _domainService.Get(lev, (DateTime) dateFrom, (DateTime) dateTo);
        }
        if (!dateTo.HasValue) {
            dateTo = DateTime.Today;
            return _domainService.Get(lev, (DateTime) dateFrom, (DateTime) dateTo);
        }
        return _domainService.Get(lev, (DateTime) dateFrom, (DateTime) dateTo);
    }
[HttpGet(“{lev:int}”)]
public ActionResult Get(int-lev,[FromQuery]DateTime?dateFrom=null,[FromQuery]DateTime?dateTo=null){
如果(!dateFrom.HasValue){
dateFrom=DateTime.MinValue;
return _domainService.Get(lev,(DateTime)dateFrom,(DateTime)dateTo);
}
如果(!dateTo.HasValue){
dateTo=DateTime.Today;
return _domainService.Get(lev,(DateTime)dateFrom,(DateTime)dateTo);
}
return _domainService.Get(lev,(DateTime)dateFrom,(DateTime)dateTo);
}

如果请求中省略了下限
dateFrom
,它应该从最早的条目开始,如果省略了限制
dateTo
,它应该返回从
dateFrom
到今天的所有值。

使用$gte和$lte操作符。日期作为UTC日期时间存储在MongoDB中(您的程序可能正在使用其他格式)。
    [HttpGet("{lev:int}")]
    public ActionResult<List<Domain>> Get(int lev, [FromQuery] DateTime? dateFrom = null, [FromQuery] DateTime? dateTo = null) {
        if (!dateFrom.HasValue) {
            dateFrom = DateTime.MinValue;
            return _domainService.Get(lev, (DateTime) dateFrom, (DateTime) dateTo);
        }
        if (!dateTo.HasValue) {
            dateTo = DateTime.Today;
            return _domainService.Get(lev, (DateTime) dateFrom, (DateTime) dateTo);
        }
        return _domainService.Get(lev, (DateTime) dateFrom, (DateTime) dateTo);
    }