2012-06-12 58 views
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=n - 它跳過n,返回休息項目 (如預期太) 但是,localhost/api/accounts?$top=1返回所有賬戶,而不是一個。

我該如何處理?

回答

1

的問題是在[可查詢(RESULTLIMIT = 50)〕:

它和$top=1一起產生以下表達式: coll.Take(1).Take(50)返回不爲1,但50(或在集合中的所有元素,在情況下,如果元素少於50)。
順便說一下,Database.GetCollection<A>("A").AsQueryable().Take(1).Take(50) - 不再返回1個元素。
這看起來像臭蟲MongoDbDriver

0

使用與$orderby

localhost/api/accounts?$top=1&$orderby=... 
相關問題