2

我陷入了一些奇怪的问题。这是代码 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返回所有帐户,而不是之一。

我该如何处理?

4

2 回答 2

1

问题出在[Queryable(ResultLimit=50)] 中:

它和$top=1一起产生以下表达式: coll.Take(1).Take(50)它返回的不是 1,而是 50(或集合中的所有元素,以防元素少于 50)。
顺便说一句,Database.GetCollection<A>("A").AsQueryable().Take(1).Take(50)- 不再返回 1 个元素。
这看起来像 MongoDbDriver 中的错误

于 2012-06-13T11:48:25.900 回答
0

$orderby

localhost/api/accounts?$top=1&$orderby=...
于 2012-08-24T20:52:26.543 回答