如何向 mongodb 中的现有项目添加数据

How to add data to an already existing item in mongodb

所以我有一个名为 'users' 的集合。其中列出了用户列表和配置文件 info.They 都存储在 mongodb 中。我想添加一个选项,让他们可以在 profile.For 示例中添加更多图片 我只想在集合中的项目中添加一个额外的 "4":"newpicture.png" 到 "Documents"。如何在不重写所有数据的情况下向该项目添加小节?

当前数据示例

{
  "name": "Oran",
  "username": "Oran.Hammes",
  "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/brandonflatsoda/128.jpg",
  "email": "Oran.Hammes.Lubowitz@hotmail.com",
  "dob": "1953-03-21T17:40:17.020Z",
  "phone": "364-846-1607",
  "address": {
    "street": "Schultz Stream",
    "suite": "Suite 618",
    "city": "North Muriel mouth",
    "zipcode": "06447-1081",
    "geo": {
      "lat": "57.1844",
      "lng": "-56.8890"
    }
  },
  "website": "misty.net",
  "company": {
    "name": "Hettinger, Reilly and Stracke",
    "catchPhrase": "Multi-tiered system-worthy database",
    "bs": "best-of-breed evolve e-markets"
  },
  "Documents":{
    "1":"image.png",
    "2":"Test.jpg",
    "3":"Next.png"
  }
}

与 .update({ 用户名: "Oran.Hammes" },{$set: {"Documents" :{"4": "newpicture.png"}}})

你可以使用 db.collection.update:

db.users.update(
    { "username": "Oran.Hammes" },
    $set: { "Documents.4": "newimage.jpg" } });

第一个 curly 是过滤器以引用您的记录(在 MongoDB 中称为文档),然后您只将新项目添加到您的记录中。 希望这有帮助。

Mongo 具有更新命令的 $set 部分,用于更新单个文档中的值。您可以在此处阅读有关修改文档的更多信息:https://docs.mongodb.org/manual/tutorial/modify-documents/

例如:

db.users.update(
    { "username": "Oran.Hammes" },
    {
        $set: {
            "Documents.4" : "newpicture.png"
        }
    }
)

关于是否需要重写数据,参考这个问题:Does MongoDB $set write just the field or the whole document?。基本上,这取决于您如何设置数据库,以及为每个文档分配了多少内存。