我遇到了一些奇怪的问题。这是代码 AccountsController.cs
// GET /api/accounts
[HttpGet]
[Queryable(ResultLimit = 50)]
public IQueryable<AccountDto> Get()
{
return this.service.Get();
}
这里的服务 - 它是AccountService.cs
public IQueryable<AccountDto> Get()
{
return this.readModel.Get();
}
和readModel的类型为AccountsReadModel
public IQueryable<AccountDto> Get()
{
return Database.GetCollection<AccountDto>("Accounts").AsQueryable();
}
数据库是MongoDb.Driver.Database
问题如下:
当我尝试查询没有任何参数的Get方法时 -
localhost/api/accounts
- 它返回所有帐户(按预期)
当我使用skip:localhost/api/accounts?$skip=n
时 - 它会跳过n并返回其余项目
(也是如此)
但是,localhost/api/accounts?$top=1
会返回所有帐户,而不是一个帐户。
我该如何处理?
答案 0 :(得分:1)
问题出在 [可查询(ResultLimit = 50)]:
它与$top=1
一起产生以下表达式:
coll.Take(1).Take(50)
返回的不是1,而是50(或者集合中的所有元素,如果元素少于50则)。
顺便说一句,Database.GetCollection<A>("A").AsQueryable().Take(1).Take(50)
- 不再返回1个元素
这看起来像MongoDbDriver中的错误
答案 1 :(得分:0)
与$orderby
localhost/api/accounts?$top=1&$orderby=...