根据文档中的另一个字段更新字段

阿萨夫

是否可以使用update运算符基于另一个字段来更新文档字段?

在这里看到游乐场

我拥有健康和maxHealth的玩家集合,我的目标是将玩家健康重置为maxHealth值

db={
  "players": [
    {
      "_id": ObjectId("5fba17c1c4566e57fafdcd7e"),
      "username": "moshe",
      "health": 0,
      "maxHealth": 200,
      
    }
  ]
}

// update
db.players.update({
  username: "moshe"
},
{
  "$set": {
    "health": "$$maxHealth",
    
  }
})

谢谢!

土生的

从MongoDB v4.2开始您可以对聚合管道使用update

PlayersSchema.update(
  { username: "moshe" },
  [{
    "$set": { "health": "$maxHealth" }
  }]
)

在MongoDB v4.2以下

  1. 使用find()save()
PlayersSchema.find({ username: "moshe" }).forEach(function(doc){
  doc.health = doc.maxHealth; 
  doc.save();
})
  1. 使用find()bulkWrite()
const players = await PlayersSchema.find({ username: "moshe" }, { maxHealth: 1 });
const updatePlayers = players.map(({ _id, maxHealth }) => ({
  updateOne: {
    filter: { _id: mongoose.Types.ObjectId(_id) },
    update: { health: maxHealth }
  }
}));
PlayersSchema.bulkWrite(updatePlayers).then(res => {
   console.log(res.insertedCount, res.modifiedCount, res.deletedCount);
});

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

经过120分钟后,如何根据订单表中的另一个字段更新字段?

Django-根据另一个字段更新模型字段

在一个字段中输入数据并自动更新另一个字段

React:以动态生成的形式基于另一个字段更新字段值

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

添加新字段,它是文档中另一个字段的大小

根据另一个字段更新一个字段

使用字段值更新同一文档中的另一个字段

选择案例/根据另一个字段更新一个字段

根据另一个字段中的值更改“添加日期”字段

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

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

在Cloud Firestore中创建另一个字段时,如何更新文档中的字段?

SQL更新字段基于另一个字段的条件

当另一个字段更新时更新字段的模式的标准实践

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

Elasticsearch将每个文档的ID更新为文档中另一个字段的值

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

根据另一个字段的总和更新SQLite布尔字段

根据流中的另一个字段汇总字段

Laravel更新字段,带有另一个字段值

postgres - 创建触发器以使用新格式的另一个字段更新字段

C# 使用另一个字段的 setter 更新字段

在 Android MVVM 中更改另一个字段时更新字段

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

如何根据django模型中的另一个字段使字段唯一?

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

如何在反应中根据另一个字段更新一个字段?

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