Mongodb 更新文档中的一个字段,然后根据前一个字段的值更新另一个

马特克鲁德

我有这样的文件

    {
      "_id": ObjectId("626f942bb092f78afd9dad9d"),
      "item_id": "external _id222",
      "metadata": {
        "item_name": "abc",
        "quantity": 123,
        "state": null
      },
    }

我想要做的是,$inc即增加计数,quantity然后更新stateSOLD,如果quantity等于 124。我可以通过 2 个查询来做到这一点,更新quantity,做一个 if-else 检查然后更新state有没有办法在一个查询中做到这一点update()(最好没有聚合)

射线

使用 MongoDB v4.2+,您可以通过聚合管道进行一次更新来实现原子行为。用于$add进行增量并$cond检查数量 = 123

db.collection.update({
  "item_id": "external _id222"
},
[
  {
    $set: {
      "metadata.quantity": {
        $add: [
          "$metadata.quantity",
          1
        ]
      }
    }
  },
  {
    $set: {
      "metadata.state": {
        $cond: {
          if: {
            $eq: [
              "$metadata.quantity",
              124
            ]
          },
          then: "SOLID",
          else: "$metadata.state"
        }
      }
    }
  }
],
{
  multi: true
})

这是Mongo游乐场供您参考。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用MongoDB和C#使用另一个字段的值更新文档?

根据MongoDB文档中的另一个字段更新一个字段(在Node.js中使用Mongoose)

使用另一个字段的值更新MongoDB字段

如何使用另一个字段的值更新MongoDB字段

如何根据另一个字段更新mongodb中的数组字典元素

根据另一个字段的值在MongoDB中投影一个字段

MongoDB 使用另一个集合中的另一个字段更新字段

MongoDB - 更新一个或另一个字段

仅在mongodb中的字段小于另一个字段时更新

Mongodb 比较使用一个字段与对象数组中的另一个字段

按字段过滤,然后选择另一个字段mongodb

查找来自一个字段的值不为null且不在另一个字段中的MongoDB文档

C#MongoDb-如何更新嵌套文档中的一个字段?

在 MongoDB 中,有一个对象列表,通过查询同一对象的另一个字段的值,根据对象的一个字段的值对所有文档进行排序

根据MongoDB中的另一个字段有选择地返回一个字段

MongoDB将ObjectId从一个字段移动到另一个字段

Mongodb在一个字段上查询取决于另一个字段

Mongodb按一个字段选择所有字段,然后按另一个字段排序

mongoDB $ set问题,使用文档的键值/另一个字段值

在每个文档中添加一个新字段,并在mongodb中为同一文档的另一个字段赋值

mongodb在从另一个字段派生的所有文档中添加字段

MongoDB:在一个字段上更新每个文档

MongoDB:如何为集合中的每个文档设置一个新字段,该字段等于另一个字段的值

根据条件更新一个字段的许多 mongoDB 记录

更新文档并创建一个字段,该字段是集合MongoDB中具有相同ID的所有对象的数组

如何将一个数组字段的长度添加到Mongodb文档中的另一个字段中

MongoDB Aggregate在文档中添加一个新字段(如果已存在另一个字段)

如何查询MongoDB的一个字段值是否以字符串的形式出现在另一个字段值中?

如何使用 nodejs 通过 objectId 和 mongodb 中的另一个字段查找文档?