MongoDB 去重(distinct)查询后求总数(count)
生活随笔
收集整理的這篇文章主要介紹了
MongoDB 去重(distinct)查询后求总数(count)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在使用MonoDB 做報表匯總經常的有去重統計總數的需求,在此總結一下實現方式:
1, 直接使用distinct 語句查詢, 這種查詢會將所有查詢出來的數據返回給用戶, 然后對查詢出來的結果集求總數(耗內存,耗時一些)
var len = db.student.distinct("name",{"age" : 18}).length; print(len)注,使用這種方法查詢時,查詢的結果集大于16M 時會查詢失敗,失敗信息如下:
{“message” : “distinct failed: MongoError: distinct too big, 16mb cap”,”stack” : “script:1:20”}
2, 使用聚合函數,多次分組統計結果,最終將聚合的結果數返回給用戶
db.student.aggregate([{$match:{"age" : 18}},{$project:{"name":true}},{$group:{_id:"$name"}},{$group:{_id:null,count:{$sum:1}}} ])注,這種查詢數據量大時就不會出現如上查詢失敗的情況,而且這種查詢不管是內存消耗還是時間消耗都優于上面一種查詢.
原文參見個人博客:http://www.xuexiyuan.cn/article/detail/148.html
總結
以上是生活随笔為你收集整理的MongoDB 去重(distinct)查询后求总数(count)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “悬崖栖归月”上一句是什么
- 下一篇: 颐和园闭园时间几点