小编Mar*_*sse的帖子

如何使用 MongoDB 数组更新插入?

我正在尝试插入、更新 MongoDB 数组中的值。
我的MongoDB版本是4.0.5。

这是我的收藏:

{
    'id': 1,
    'array': [{
        'code': 'a'
    }, {
        'code': 'b'
    }]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试进行一些 upsert 查询以插入/更新到数组中,但直到那时我才找到一个好的解决方案。

我的过滤器是:

  • 'id'(指出正确的文件)
  • 'array.code'(指向正确的数组单元)
  1. 如果文档存在于集合中但没有包含以下内容的单元格'code': 'c'
db.test.update({
        'id': 1
    }, {
        $set: {'array.$[elem].test':'ok'}
    }, {
        upsert: true,
        arrayFilters: [{'elem.code': 'c'}]
    }
)
Run Code Online (Sandbox Code Playgroud)

我没有错误,但也没有更新插入。
我想像这样在数组中插入元素:

// Desired result
{
    'id': 1,
    'array': [{
        'code': 'a'
    }, {
        'code': 'b'
    }, {
        'code': 'c'
        'test': 'ok'
    }]
}
Run Code Online (Sandbox Code Playgroud)
  1. 如果文档不存在于集合中
db.test.update({
        'id': 3
    }, {
        $set: {'array.$[elem].test':'ok'}
    }, {
        upsert: …
Run Code Online (Sandbox Code Playgroud)

arrays mongodb mongodb-query

4
推荐指数
1
解决办法
2106
查看次数

标签 统计

arrays ×1

mongodb ×1

mongodb-query ×1