【问题标题】:MongoDB 2.0.42 : Pushing to a nested array?MongoDB 2.0.42:推送到嵌套数组?
【发布时间】:2015-09-15 12:16:52
【问题描述】:

大家好,我已经被这个问题困扰了一段时间了。 所以我的 MongoDB 数据库中有一个如下所示的 JSON 对象:

{
  "gameID" : 900000001
  "characters" : [
    {
      "characterID" : 1
      "inventory" : [
        "item1"
      ]
    }
  ]
}

如何使用这部分 JSON 添加到库存数组中?

{
  "gameID" : 900000001
  "characterID" : 1
  "inventory" : [
    "item2"
    "item3"
  ]
}

我尝试过使用多个不同的 findOneAndUpdate 操作和 updateOne 操作,但我似乎无法访问字符中的库存数组。我似乎总是将“item2”和“item3”推到不正确的位置。我对此进行了大量研究,并发现了一些有趣的读物。

push into deeply nested array 这个问题的答案暗示使用 MongoDB 2.0.42 可能是不可能的。如果我无法做到这一点,那么有人可以指出下一个最佳方法吗?

另外,为什么我不能在 npm 中使用最新版本的 MongoDB? Npm 似乎只允许安装最高版本 2.0.42。提前致谢。

【问题讨论】:

    标签: arrays json node.js mongodb


    【解决方案1】:

    如果我没记错的话,您使用的是 mongodb driver 的最新版本(2.0.42),而不是 mongodb 本身。如果要检查数据库本身的版本,请在命令行中输入:

    mongod --version
    

    我会使用 positional operator 和 $each 运算符,它允许您将多个值附加到列表中。

    db.collection.updateOne({
        gameID: 900000001,
        "characters.characterID": 1
    },
    {
        $push: {
            "characters.$.inventory": {
                 $each:["item2", "item3"]
            }
        }
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2018-09-26
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多