首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在$arrayElement聚合函数中处理空值

在$arrayElement聚合函数中处理空值
EN

Stack Overflow用户
提问于 2022-07-19 14:55:34
回答 1查看 67关注 0票数 0
代码语言:javascript
复制
                "safeguard": {
                    $arrayElemAt: [
                        "$join.safe_prevention",
                        0
                    ]
                },

我在我的项目中有这个聚合,它可以工作,但是它返回true或null,我需要它返回true或false。

代码语言:javascript
复制
                "safeguard": {
                    $not: {
                        $eq: [$arrayElemAt: [
                                                "$join.safe_prevention",
                                                0
                                            ]
                        : null]
                    }
                },

我已经尝试过了,但是它不起作用,因为$eq不接受函数作为它的第一个参数,那么如何才是正确的方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-19 15:11:52

问题不是很清楚,因为我不知道true是在哪里设置的,但是如果您想避免null,可以使用$ifNull

代码语言:javascript
复制
db.collection.aggregate([
  {
    $set: {
      safeguard: {$ifNull: [{$arrayElemAt: ["$join.safe_prevention", 0]}, false]}
    }
  }
])

看看它如何在操场实例上工作

如果您想获得true (如果有0项)和false (如果没有这样的项),您可以尝试:

代码语言:javascript
复制
db.collection.aggregate([
  {$set: {
      safeguard: {
        $cond: [
          {$eq: [
              {$ifNull: [{$arrayElemAt: ["$join.safe_prevention", 0]}, false]},
              false
            ]
          }, false, true]
      }
    }
  }
])

看看它如何在操场示例布尔上工作

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

https://stackoverflow.com/questions/73039211

复制
相关文章

相似问题

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