mongodb 對資料去重後再進行統計

2021-09-05 11:46:23 字數 739 閱讀 3049

自身是mongo小白,對此問題,瀏覽好多部落格文件,都沒有找到太好的答案,彙總一下:

distinct只是去重,並不會統計,返回的是列表,如下

db.clct.distinct("a");
返回:

"1",

"14",

"15",

"16",

"18"

如果需要進行分組統計,可以用$group

db.clct.aggregate([

}}]);

返回:

說回原題,在資料量比較小的情況下,可以用以下方式進行去重後統計,如下

db.clct.aggregate([

},},

}}])

原理是,先使用第乙個分組對指定鍵上的所有值去重,然後使用第二個分組統計這些值。

但是資料量較大的話,就會報exceeded memory limit for $group, but didn't allow external sort. pass allowdiskuse:true to opt in.錯,大體意思是超出記憶體限制。

目前還沒有找到針對資料量較大的情況下的辦法,有好心的可以提供一下解決辦法,多謝!!!!

MongoDB資料庫去重操作

關於pymongo的去重方法,網上找了老半天,都沒有發現單獨對pymongo裡面的資料進行去重的方法 網上說的最多的是 使用 distingct 方法進行去重操作,但是這個方法,只是返回了去重之後的資料,並沒有返回整個資料列表 而且並不是說執行過後,就把資料庫中重複的內容刪除了,因此並沒有達到我的需...

mongodb去重語句詳解

db.demo.aggregate count dups foreach function doc 當前資料庫的demo集合呼叫aggregate方法 通過欄位text對資料進行分類 每類資料每有乙個計數加1並存入變數count中 將 id不重複的存入dups中 目前取出的每組資料只要count大於...

mongodb中處理插入資料去重問題

最近在寫乙個爬蟲工具,將 的資料儲存到mongodb中,由於資料有重複的,所以我就在建立資料庫的時候,為集合建立了索引,下面說下我的步驟,集合名稱為drugitem,下面是集合截圖 我要為name欄位建立唯一索引,因為要保證name沒有重複 就這樣我執行程式發現資料比原來沒有設定唯一索引時少了好多,...