2014-07-10 55 views
0

我有問題,哪種計數方法更快: 我有一些名爲filterParameters的過濾器參數。 現在我做:Mongo指望收集或計算光標 - 更快

1. First option: 
    int count = count with db.dbCollection.count(filterParameters) 
    and then 
    dbCursor = db.dbCollection.find(filterParameters).skip(..).limit(..) 

2. Second way: 
    dbCursor = db.dbCollection.find(filterParameters).skip(..).limit(..) 
    int count = dbCursor.count() 

而且在Java中,第一種方式:

Integer countAllItems = documentService.count(documentType,filterQuery) 
DBCursor documents = documentService.list(documentType, [:], filterQuery, sortQuery, command.start, command.count) 

其中:documentService.count(documentType,filterQuery)做:

def collection = db.getCollection(documentType.collectionName) 
collection.count(filterQuery) 

和documentService.list只找到集合。

然後第二種方式:

DBCursor documents = documentService.list(documentType, [:], filterQuery, sortQuery, command.start, command.count) 
Integer countAllItems = documents.count() 

哪一個更快的方法?

回答

2

既不是,您使用的特定計數是光標計數的符號鏈接,它們是相同的函數。

+0

然後第二個應該更快?如果你說實際上'count'查詢等同於'find' +光標計數(也就是說「第二種方式」),那麼「第一個選項」相當於第二個+另一個find查詢。或者我在某個地方誤認了?最重要的是,mongo不會利用他執行的查詢嗎? – dgiugg

+0

所以我geting realy不同ferentings,因爲當我用在java驅動程序的第一個選項,我geting大廳時間短於第二個選項。 – lukisp

+0

@dgiugg不,你只在這兩種方法中做一個查詢 – Sammaye