【问题标题】:Replace items into mongo object via mongoose通过 mongoose 将项目替换为 mongo 对象
【发布时间】:2022-01-27 22:41:12
【问题描述】:

我想编辑我的 mongodb 集合中的一个项目。

在我的数据库中,我有一个具有以下值的“人”:

{
"_id": {Random Object Id},
"property": [{
  "model": ["BMW", "Toyota", "Honda"],
  "color": ["red", "blue", "yellow"],
}, {
  "model": ["Test0", "Test1", "Test2"],
  "color": ["black", "blue", "brown"],
}]
}

这里的“属性”是一个数组,有 2 个对象。此外,所有这些都应该井井有条。 我想更改第二个对象中的一个值。第二个对象应该像

  "model": ["Test0", "Test1", "Test2"],
  "color": ["black", "red", "brown"],

如何在我的快递服务器中应用这种代码,以及如何将“红色”颜色放入第二个元素?

personModel.findByIdAndUpdate({_id: req.session.person._id}, {$set: {
`property.$[index].color` : "red"}})

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    如果你知道索引,你可以手动定义它:

    db.collection.updateOne(
    {_id: req.session.person._id},
    {
      "$set": {
        "property.1.color.1": "red"
      }
    })
    

    Mongo Playground

    如果您想更改特定颜色,您应该使用更新arrayFilters 选项,如下所示:

    db.collection.updateOne(
    {_id: req.session.person._id},
    {
      "$set": {
        "property.1.color.$[elem]": "red"
      }
    },
    {
      arrayFilters: [
        {
          elem: "blue"
        }
      ]
    })
    

    Mongo Playground

    【讨论】:

    • 好的,这行得通。我最近评论了另一个问题,但我解决了它,所以不要介意。非常感谢。
    猜你喜欢
    • 2022-01-07
    • 2020-04-02
    • 2018-02-20
    相关资源
    最近更新 更多