【发布时间】:2021-02-16 21:36:07
【问题描述】:
我希望按该值对不同字段中具有共同值的文档进行分组。简化的记录是:
{ _id:1,
"Home" : "A",
"Away" : "B" }
{ _id:2,
"Home" : "B",
"Away" : "C" }
{ _id:3,
"Home" : "C",
"Away" : "A" }
{ _id:4,
"Home" : "C",
"Away" : "B" }
{ _id:5,
"Home" : "A",
"Away" : "C" }
我正在尝试获取一个聚合组结果,例如,该结果包括值“A”,无论它是出现在“主页”字段还是“离开”字段的文档中。我想要的结果是:
{"_id": "A", "count": 3},
{"_id": "B", "count": 3},
{"_id": "C", "count": 4}
按“Home”或“Away”分组没有问题,但这不会给我所有记录,如下所示,我不会得到“A”或“B”或“ C”在“主页”字段中:
{$group:
{_id: "$Away"} etc... }
我已尝试在此处使用其他帖子中的 $cond,如下所示:
$group : {
_id : {
$cond : [{
$gt : [ "$Away", null]
}, "$Home"]
}
}
还尝试了 $or ,这显然是错误的,因为它只会在每个文档中为 Away 和 Home 字段找到相同的值(从未如此):
$group : {
_id : {
$or : [ "$Away", "$Home"]
}
}
我被困住了,不确定这是否可能;对可能位于不同文档的不同字段中的值进行分组。
【问题讨论】:
标签: mongodb aggregation-framework