I have a collection with documents are like this:
{
"date" : 20200817,
"items" : [
{
"name" : "item1", "values" : ["val1", "val2", "val3"]
},
{
"name" : "item2", "values" : ["val1", "val3", "val4", "val5"]
},
{
"name" : "item3", "values" : ["val1", "val3"]
}
]
}
I want to get intersection (∩) values that items.name in ["item1", "item2"] like this
["val1", "val3"]
I have this query :
db.output.aggregate([{
$project: {
output: {
$map: {
input: {
$filter: {
input: "$lists",
cond: {$in: ["$$this.name", ["item1", "item2"]]}
}
}, in: "$$this.values"
}
}
}
},
{
"$project": {
"output": {"$setUnion": "$output"}
}
}])
but the result is
{
"output" : [
["val1", "val2", "val3"],
["val1", "val3", "val4", "val5"]
]
}
Where is my query wrong?
What can I do?
Thanks