利用Mongodb聚合(aggregate)來進行復雜查詢的技巧

1、以多個key作爲唯一鍵,分組查詢

比如項目和主機地址(ip)有交叉關係,需要按ip和proj都不同的方式分組取出數據。
利用$group的_id對象分組,可以再用$project重命名。

db.Model.aggregate([
  {
    $group:{
      _id: {
        ip: '$ip',
        proj: '$proj' 
      }
    }
  },
  {
    $project:{
      ip: '$_id.ip',
      proj: '$_id.proj'
    }
  }
]);

2、數據值轉換

  1. 字符串等轉爲Boolean值。
$project: {
  isError: {$eq: ['$state', 'error']}
}
  1. Boolean值轉爲數字1\0-1。
$project: {
  mistake: {$cmp: [false, '$isError']}
}

常用於$group前,將值轉爲數字1/0,在$group中利用$sum統計數目。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章