1. 程式人生 > >mongo 實現 having(count(1)>1)的功能

mongo 實現 having(count(1)>1)的功能

背景

關係型資料庫中分組去重一般都是group by … having(count(1)>1)…篩選出來重複的記錄組,一條sql搞定,但是在mongodb裡面,沒有這麼方便了,需要自己寫指令碼來實現,可以通過aggregate、group、match來操作處理。

實現

1. 先統計分組記錄數

按分組求記錄數,並按記錄數倒序出結果
執行視窗如下:

var group = (
   [
      {
        $group : {
           _id : { fenceId: "$fenceId"},
           count: { $sum: 1 }
        }
      },
      {
        $sort : {
          count
: -1 } } ] )

2. 定義對結果的過濾

var match = {
  $match : {
    count : {
      $gt : 1
    }
  }
}

3. 將過濾條件加到group的管道中

group.push(match)

4. 執行最終aggregate操作

db.stu.aggregate(group);