MongoDB不同的聚合结果

时间:2016-06-28 16:48:45

标签: mongodb mongodb-aggregation

我有这个问题:

db.collection.aggregate([
  {
    $group: {
      _id: "$PATIENT_ID", 
      MASS: { $max: "$max_field" }
    }
  }
]); 

此查询的结果是:

{ "_id" : "TCGA-A2-A0YD", "mass" : 0.994683301742671 }
{ "_id" : "TCGA-A2-A3XX", "mass" : 0.993455527786917 }

我有第二个查询:

db.collection.aggregate([
  {
    $group: {
      _id: "TCGA-A2-A3XX",
      MASS: { $max: "$max_field" }
    }
  }
]);

第二个查询的结果是:

{ "_id" : "TCGA-A2-A3XX", "mass" : 0.994683301742671 }

为什么呢?  我期望此ID为TCGA-A2-A3XX

的另一个值

1 个答案:

答案 0 :(得分:3)

您的问题是您按常量"TCGA-A2-A3XX"对所有文档进行分组,因此您会获得一个具有该ID的组,并计算所有文档中字段的最大值。
我想你想在你的管道中添加一个$match阶段来过滤你的特定病人。

db.collection.aggregate([
  { 
    $match: {
      PATIENT_ID: "TCGA-A2-A3XX"
    }
  },
  {
    $group: {
      _id: "$PATIENT_ID",
      MASS: { $max: "$max_field" }
    }
  }
]);