MongoDB 不同的聚合结果

标签 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

有另一个值

最佳答案

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

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

关于MongoDB 不同的聚合结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081985/

相关文章:

mongodb - 从对象数组 MongoDB 获取不同的值

mongodb - 多个复合键

java - 更新(递增)MongoDB 子文档中的值

MongoDB 在聚合管道中使用 $addToSet 避免重复

mongodb - 如何在mongodb中获取子集合的聚合

node.js - mongoDB与nodejs返回数据

node.js - 正确使用异步函数

mongodb - 在其他集合中查找值的计数

node.js - MongoDB 使用聚合 $lookup 或 Node.js 中的 populate 连接两个集合