3

私はこのクエリを持っています:

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 }

この2番目のクエリがあります:

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

この 2 番目のクエリの結果は次のとおりです。

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

なんで?この ID には別の値が必要でしたTCGA-A2-A3XX

4

1 に答える 1

3

問題は、すべてのドキュメントを定数"TCGA-A2-A3XX"でグループ化しているため、その ID を持つ単一のグループを取得し、すべてのドキュメントからフィールドの最大値を計算することです。$matchステージをパイプラインに
追加して、特定の患者をフィルタリングする必要があると思います。

db.collection.aggregate([
  { 
    $match: {
      PATIENT_ID: "TCGA-A2-A3XX"
    }
  },
  {
    $group: {
      _id: "$PATIENT_ID",
      MASS: { $max: "$max_field" }
    }
  }
]);
于 2016-06-28T17:19:39.170 に答える