MongoDB 聚合结果不同
MongoDB different result of 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" }
}
}
]);
我有这个查询:
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" }
}
}
]);