Mongo 投影根据键是否存在来设置值

哈利勒·曼加吉

我有一个 mongo 文档,看起来像:

{
  bookings: [
    {complete: true, name: "John", checklist: {a: 1, b: 2}},
    {complete: false, name: "Kate"},
    {complete: true, name: "Mary", checklist: {a: 1, b: 2}}
  ]
}

我有一个带有投影的聚合,如下所示:

{
  $project: {
    'bookings.complete': 1,
    'bookings.name': 1
  }
}

它返回预订数组,只有完整和名称键。

我现在想添加一个键hasChecklisttrue如果检查表存在,则称为键false否则。

但我被卡住了,因为这个投影总是会因为true某种原因返回:(

{
  $project: {
    'bookings.complete': 1,
    'bookings.name': 1
    'bookings.hasChecklist': { $ne: ['$bookings.checklist', null] }
  }
}

基本上我得到

{
  bookings: [
    {complete: true, name: "John", hasChecklist: true},
    {complete: false, name: "Kate", hasChecklist: true},
    {complete: true, name: "Mary", hasChecklist: true}
  ]
}

当我想要

{
  bookings: [
    {complete: true, name: "John", hasChecklist: true},
    {complete: false, name: "Kate", hasChecklist: false},
    {complete: true, name: "Mary", hasChecklist: true}
  ]
}

任何人都知道投影中的正确表达应该是什么?

巴糖

试试$project下面的:

{
    "bookings": {
        "$map": {
            "input": "$bookings",
            "as": "booking",
            "in": {
                "complete": "$$booking.complete",
                "name": "$$booking.name",
                "hasChecklist": { "$gt": [ "$$booking.checklist", null ] }
            }
        }
    }
}

它应该返回以下结果:

{
    "bookings" : [
        {
            "complete" : true, 
            "name" : "John", 
            "hasChecklist" : true
        }, 
        {
            "complete" : false, 
            "name" : "Kate", 
            "hasChecklist" : false
        }, 
        {
            "complete" : true, 
            "name" : "Mary", 
            "hasChecklist" : true
        }
    ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据是否存在字段在投影管道中实现mongo $ cond字段

来自分类Dev

检查mongo集合中是否存在值

来自分类Dev

Mongo 位置投影 $

来自分类Dev

mongo查询-属性是否存在?

来自分类Dev

Mongo投影仅用于字段和值

来自分类Dev

流星mongo获取并设置值

来自分类Dev

Mongo嵌套键查询

来自分类Dev

检查mongo文档数组中是否存在值

来自分类Dev

在mongo计数更多的值

来自分类Dev

Mongo使用未知的父键查找值

来自分类Dev

mongo查询缺少键的对象

来自分类Dev

mongo查询缺少键的对象

来自分类Dev

动态命名mongo键字段

来自分类Dev

根据时间更新mongo文档

来自分类Dev

mongo db-将值投影到向量中

来自分类Dev

基于非数组字段在mongo文档中投影数组值

来自分类Dev

Mongo查询:$ exist NULL值

来自分类Dev

从mongo shell获取MongoBinData值

来自分类Dev

使用Java更新值mongo

来自分类Dev

日期值之间在mongo中

来自分类Dev

FindOne mongo 返回空值

来自分类Dev

检查 PHP 7 中 Mongo DB 查询中是否存在值(字符串)

来自分类Dev

动态mongo投影-使用文档中的字段确定投影的投影

来自分类Dev

在Meteor中从mongo返回的对象中存储键的值

来自分类Dev

节点JS-检查mongo DB中是否存在字段

来自分类Dev

mongo终端,检查数据库是否存在功能

来自分类Dev

Mongo查询,查找数组中是否存在字符串

来自分类Dev

根据Mongo中的列值返回集合名称

来自分类Dev

根据子文档中的值对mongo db文档进行排序