2015-12-14 63 views
3

我已閱讀MongoDB Wire Protocol並執行我自己的驅動程序。在原始MongoDB協議上實現「count」方法的正確方法是什麼?

我試圖實現「count」方法,它返回符合條件的文檔數量。 但是在上面的手冊中,我找不到適合計數方法的操作碼。

可能通過執行OP_QUERY獲取所有需要的文檔並將它們計入驅動程序代碼中。但它看起來效率很低(文檔中不必要的內容將在網絡上發送)。

我可以通過其他方式有效實施「計數」方法嗎?

回答

0

我創建了mongo-proxy腳本,它代理了MongoDB協議並在MongoDB服務器和標準mongo客戶端程序之間運行它。

作爲結果,我確認請求消息發送如下。

命令:

> use test-db 
> db.TestCollection.find({'a': 1}).count() 
3 

消息:

===== client -> server ===== 
type: OP_QUERY 
full_collection_name: test-db.$cmd 
query: {'count': 'TestCollection', 'query': {'a': 1.0}, 'fields': {}} 

===== server -> client ===== 
{'n': 3.0, 'ok': 1.0} 

我能得到從測試分貝計數值$ CMD集合。 :-)

相關問題