我有一个带布尔字段的员工集合。由于我的聚合涉及展开数组,所以我希望按ID对文档进行分组,然后在它们的布尔字段上执行逻辑OR。
所以对于一个收藏品:
{
_id: "995",
matched: true
},
{
_id: "10",
matched: false
},
{
_id: "995",
matched: false
}我想要这样的东西:
{
_id: "995",
matched: true
},
{
_id: "10",
matched: false
}我的斗争类似于this question,但我只按一个布尔字段分组,所以当我尝试使用$or时,Mongo说“$or累加器是一个一元运算符”
发布于 2020-07-23 18:15:38
你可以用$or: ["$matched", true]试试,
有效载荷:
[
{
id: "995",
matched: true
},
{
id: "10",
matched: false
},
{
id: "995",
matched: false
}
]查询:
db.collection.aggregate([
{
$group: {
_id: {
id: "$id",
matched: {
$or: ["$matched", true]
}
},
root: {
$first: "$$ROOT"
}
}
},
{
$replaceRoot: {
newRoot: "$root"
}
}
])https://stackoverflow.com/questions/62996890
复制相似问题