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スキップを使用すると (意図したとおり) すべてのアカウントが返されます:ひとつの。localhost/api/accounts?$skip=nlocalhost/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 に答える