2012-08-09 148 views

回答

29

Javadoc of the MongoDB Java Driver,它說:

DBCursor.count():統計與查詢匹配的對象的數量。這 做考慮限制/跳過。

DBCursor.size():計算匹配查詢的對象數量。這 確實考慮了限制/跳過。

+0

兩者似乎都是一樣的......爲什麼他們引入了2種這樣的方法?兩者之間有什麼性能差異? – Byter 2012-08-09 10:31:13

+0

它們不一樣。考慮限制/跳過,但其他不考慮。 – 2012-08-09 10:38:32

+13

我懷疑區別在於「不採取」和「採取」限制/跳過考慮。 – 2012-08-09 10:38:32

1

不只是一個答案我想指出一個問題,我們的團隊面臨着「混合」這兩個問題。

我們有這樣的事情:

DBCursor cursor = collection.find(query).limit(batchSize); 

logger.info("{} items found.", cursor.count()); 

while (cursor.hasNext()) { 
... 
} 

原來調用cursor.count()方法之後,限爲忽略(plase看看this其它問題),我們打算知道多少物品是由查詢返回的,所以我們應該調用cursor.size()方法,因爲調用count時確實會產生不希望的附帶效果。

我希望這可以對任何人有所幫助,因爲找到我們遇到的問題的根源並不那麼容易。

+0

你是說'cursor.count()'不僅忽略了記錄的限制,而且實際上從遊標中刪除了限制,比如迭代遊標等後續操作的行爲就好像沒有設置限制一樣? – 2016-06-16 23:15:29

相關問題