首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB聚合-按逻辑或

问MongoDB聚合-按逻辑或
EN

Stack Overflow用户
提问于 2020-07-20 13:52:06
回答 1查看 658关注 0票数 1

我有一个带布尔字段的员工集合。由于我的聚合涉及展开数组,所以我希望按ID对文档进行分组,然后在它们的布尔字段上执行逻辑OR。

所以对于一个收藏品:

代码语言:javascript
复制
{
   _id: "995",
   matched: true
},
{
   _id: "10",
   matched: false
},
{
   _id: "995",
   matched: false
}

我想要这样的东西:

代码语言:javascript
复制
{
   _id: "995",
   matched: true
},
{
   _id: "10",
   matched: false
}

我的斗争类似于this question,但我只按一个布尔字段分组,所以当我尝试使用$or时,Mongo说“$or累加器是一个一元运算符”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-23 18:15:38

你可以用$or: ["$matched", true]试试,

有效载荷:

代码语言:javascript
复制
[
    {
         id: "995",
         matched: true
    },
    {
         id: "10",
         matched: false
    },
    {
         id: "995",
         matched: false
    }
]

查询:

代码语言:javascript
复制
db.collection.aggregate([
    {
        $group: {
            _id: {
                id: "$id",
                matched: {
                    $or: ["$matched", true]
                }
            },
            root: {
                $first: "$$ROOT"
            }
        }
    },
    {
        $replaceRoot: {
            newRoot: "$root"
        }
    }
])

工作操场:https://mongoplayground.net/p/iD5nkb-_epZ

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62996890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档