请帮忙! 我需要获取嵌套数组中不存在于另一个嵌套数组中的元素列表, 示例文档:
{
"_id": 123,
_a: [
{
aid: 10,
_p: [
{
pid: 1,
x: "C"
},
{
pid: 2,
x: "B"
},
{
pid: 4,
x: "A"
}
],
_d: [
{
pid: 2,
x: "M"
},
{
pid: 5,
x: "M"
},
{
pid: 7,
x: "M"
}
]
}
]
}
预期产出:
{ aid:10 , pid:5}
{ aid:10 , pid:7}
Task1:我需要找到所有不存在于_a[]._p[]中的_a[]._d[].pid
Task2:我需要从 _a[]._d[] 中删除所有对象,其中 pid 在 _a[]._p[] 中不存在
db.collection.aggregate([
{
$unwind: "$_a"
},
{
$project: {
aid: "$_a.aid",
pid: {
$setDifference: [
"$_a._d",
"$_a._p"
]
}
}
},
{
$unwind: "$pid"
},
{
$project: {
aid: 1,
pid: "$pid.pid"
}
}
])