如何获取日期范围内的MongoDB条目,包括限制?
在Mongo DB中,我有以下条目:如何获取日期范围内的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.
> 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);
}