我在两个集合上使用聚合 - 其中一个是嵌套的。该集合如下所示:
[
{
"_id": "5fe72f0b4fd2c131bcc7dae0",
"sirname": "Smith",
"district": "Texas",
"events": [
{
"_id": "5fe73e91ede45b3d2eca504c",
"group": "Dogs"
}
]
},
{
"_id": "5fe72f0b4fd2c131bcc7dadf",
"sirname": "Johnson",
"district": "Washington",
"events": [
{
"_id": "5fe73e91ede45b3d2eca504b",
"group": "Cats"
}
]
},
{
"_id": "5fe72f0b4fd2c131bcc7dade",
"sirname": "MacGruber",
"district": "Washington",
"events": [
{
"_id": "5fe73e91ede45b3d2eca504a",
"group": "Dogs"
}
]
},
{
"_id": "5fe72f0b4fd2c131bcc7dadd",
"sirname": "Plissken",
"district": "Washington",
"events": [
{
"_id": "5fe73e91ede45b3d2eca5049",
"group": "Cats"
}
]
},
{
"_id": "5fe72f0b4fd2c131bcc7dadc",
"sirname": "Williams",
"district": "Texas",
"events": [
{
"_id": "5fe73e91ede45b3d2eca5048",
"group": "Dogs"
}
]
}
]
查询代码如下:
db.collection.aggregate([
{
"$match": {
district: "Washington"
}
},
{
$project: {
sirname: 1,
district: 1,
events: {
"$filter": {
input: "$events",
as: "event",
cond: {
"$eq": [
"$$event.group",
"Cats"
]
}
}
}
}
}
])
结果是这样的数组:
[
{
"_id": "5fe72f0b4fd2c131bcc7dadf",
"district": "Washington",
"events": [
{
"_id": "5fe73e91ede45b3d2eca504b",
"group": "Cats"
}
],
"sirname": "Johnson"
},
{
"_id": "5fe72f0b4fd2c131bcc7dade",
"district": "Washington",
"events": [],
"sirname": "MacGruber"
},
{
"_id": "5fe72f0b4fd2c131bcc7dadd",
"district": "Washington",
"events": [
{
"_id": "5fe73e91ede45b3d2eca5049",
"group": "Cats"
}
],
"sirname": "Plissken"
}
]
我的问题是如何从结果中排除不满足 $filter
条件的对象。也就是说,我想要这样的结果:
[
{
"_id": "5fe72f0b4fd2c131bcc7dadf",
"district": "Washington",
"events": [
{
"_id": "5fe73e91ede45b3d2eca504b",
"group": "Cats"
}
],
"sirname": "Johnson"
},
{
"_id": "5fe72f0b4fd2c131bcc7dadd",
"district": "Washington",
"events": [
{
"_id": "5fe73e91ede45b3d2eca5049",
"group": "Cats"
}
],
"sirname": "Plissken"
}
]
另外,我在 mongo playground 分享了代码。
问候!
答案 0 :(得分:1)
你可以用这个来测试:
BNP.PA.Adjusted ACA.PA.Adjusted UG.PA.Adjusted
BNP.PA.Adjusted 0.010129967x0.3 0.009577789x0.2 0.007148473x0.5
ACA.PA.Adjusted 0.009577789x0.3 0.012127668x0.2 0.007340544x0.5
UG.PA.Adjusted 0.007148473x0.3 0.007340544x0.2 0.015503678x0.5