仅当在Mongodb中使用数组运算符时该字段不存在时才设置$ set

魔术师

我需要为我的文档设置一个默认值,但是仅当该字段不存在时。我的问题是我正在使用数组运算符。

我的要求是这样的:

db.myCollection.updateMany({}, { $set: { 'foo.$[].bar.$[].test': 42 }})

myCollection 包含以下两个文档:

{
    foo: [
        { bar: [{ a: 1 }, { a: 2, test: 18 }] },
        { bar: [{ a: 1, test: 20 }, { a: 2, test: 18 }] }
    ]
}

{
    foo: [
        { bar: [{ a: 1, test: 40 }, { a: 2, test: 18 }] },
        { bar: [{ a: 1, test: 20 }, { a: 2, test: 18 }] }
    ]
}

但是,如果该属性test存在,则我不想覆盖它。因此,在我的示例中,我只想设置一个子元素的默认值(在第一个文档中)。

如何更改我的要求?

土生的

您可以使用arrayFilters

  • 创建变量bbar是存在
  • 创建一个变量ttest不存在
db.myCollection.updateMany(
    {},
    { $set: { 'foo.$[b].bar.$[t].test': 42 } },
    {
        arrayFilters: [
            { "b.bar": { $exists: true } },
            { "t.test": { $exists: false } }
        ]
    }
)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅当数组不存在时才推送到该数组

来自分类Dev

仅当值不存在时才返回行

来自分类Dev

如何使用mongodb Set运算符寻址数组

来自分类Dev

仅当不存在MongoDB文档字段时,才如何更新它们?

来自分类Dev

重载运算符<for std :: set

来自分类Dev

“运算符不存在:整数=?” 使用Postgres时

来自分类Dev

MongoError未知的顶级运算符:$ set

来自分类Dev

仅在值不存在时才使用lodash推送到数组吗?

来自分类Dev

Postgres:错误:运算符不存在:inet << inet []执行子查询时

来自分类Dev

MongoDB批量运算符,如果不存在则插入

来自分类Dev

仅当元素不存在时才将元素添加到C数组

来自分类Dev

如何在聚合管道mongodb中使用$ update / $ set运算符?

来自分类Dev

仅当使用MySQL的值不存在时才如何从表中插入值?

来自分类Dev

BATCH SET无法使用除法运算符

来自分类Dev

SQL-仅当B不存在时才选择A

来自分类Dev

在IF语句中使用SET / P时不会设置变量

来自分类Dev

对不存在的文件使用“ >>”重定向运算符

来自分类Dev

仅当表中不存在该值时才更新SQL列

来自分类Dev

SQL:使用SET运算符获取计数结果

来自分类Dev

使用model.set()时,主干运算符错误

来自分类Dev

仅当其他表中不存在数据时,SQL 才从该表中获取数据

来自分类Dev

仅当设置了变量时才使用 SELECT 运算符“AND”

来自分类Dev

仅当记录不存在时才插入表

来自分类Dev

Postgres 运算符不存在:

来自分类Dev

运算符不存在 Postgres

来自分类Dev

当值不存在时,默认求和运算符为 0

来自分类Dev

仅当新的 providerId 不存在时才更新 MongoDB 字段值

来自分类Dev

仅当 Document 中不存在 providerId 时才更新提供者数组并增加计数

来自分类Dev

在 oracle 中尝试使用不存在的运算符时插入问题

Related 相关文章

  1. 1

    仅当数组不存在时才推送到该数组

  2. 2

    仅当值不存在时才返回行

  3. 3

    如何使用mongodb Set运算符寻址数组

  4. 4

    仅当不存在MongoDB文档字段时,才如何更新它们?

  5. 5

    重载运算符<for std :: set

  6. 6

    “运算符不存在:整数=?” 使用Postgres时

  7. 7

    MongoError未知的顶级运算符:$ set

  8. 8

    仅在值不存在时才使用lodash推送到数组吗?

  9. 9

    Postgres:错误:运算符不存在:inet << inet []执行子查询时

  10. 10

    MongoDB批量运算符,如果不存在则插入

  11. 11

    仅当元素不存在时才将元素添加到C数组

  12. 12

    如何在聚合管道mongodb中使用$ update / $ set运算符?

  13. 13

    仅当使用MySQL的值不存在时才如何从表中插入值?

  14. 14

    BATCH SET无法使用除法运算符

  15. 15

    SQL-仅当B不存在时才选择A

  16. 16

    在IF语句中使用SET / P时不会设置变量

  17. 17

    对不存在的文件使用“ >>”重定向运算符

  18. 18

    仅当表中不存在该值时才更新SQL列

  19. 19

    SQL:使用SET运算符获取计数结果

  20. 20

    使用model.set()时,主干运算符错误

  21. 21

    仅当其他表中不存在数据时,SQL 才从该表中获取数据

  22. 22

    仅当设置了变量时才使用 SELECT 运算符“AND”

  23. 23

    仅当记录不存在时才插入表

  24. 24

    Postgres 运算符不存在:

  25. 25

    运算符不存在 Postgres

  26. 26

    当值不存在时,默认求和运算符为 0

  27. 27

    仅当新的 providerId 不存在时才更新 MongoDB 字段值

  28. 28

    仅当 Document 中不存在 providerId 时才更新提供者数组并增加计数

  29. 29

    在 oracle 中尝试使用不存在的运算符时插入问题

热门标签

归档