代码之家  ›  专栏  ›  技术社区  ›  user3142695

MongoDB:无法向数组对象添加字段

  •  0
  • user3142695  · 技术社区  · 7 年前

    这就是我的数据库文档的外观:

    {
        "_id" : "aN2jGuR2rSzDx87LB",
        "content" : {
            "en" : [
                {
                    "content" : "Item 1",
                    "timestamp" : 1518811796
                }
            ]
        }
    }
    

    现在我需要在 content.en 数组。 文档本身由一个id选择。 结果应该是:

    {
      "_id" : "aN2jGuR2rSzDx87LB",
      "content" : {
        "en" : [
          {
            "content" : "Item 1",
            "timestamp" : 1518811796,
            "user" : {
              "id" : 'userId'
            }
          }
        ]
      }
    }
    

    我试着这样做,但什么也没发生。我甚至没有收到错误信息。

    Content.update(
      { _id: id },
      {
        $addToSet: {
          'content.en.0.user': {
            id: 'userId',
          }
        }
      }
    )
    

    另外,我想为语言使用一个变量。我该怎么做?有点像 'content.' + language + '.0.user'

    1 回复  |  直到 7 年前
        1
  •  0
  •   mickl    7 年前

    $addToSet 当您要向数组中添加内容时非常有用。在您的例子中,您希望修改数组的第一个元素(在索引处 0 )所以你应该简单地使用 $set (这是字段更新运算符):

    Content.update(
       { _id: "aN2jGuR2rSzDx87LB" },
       {
          $set: {
             "content.en.0.user": {
             id: "userId",
          }
       }
     }
    )