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

时间:2016-01-01 02:40:03

标签: javascript mongodb insert insert-update database

所以我有一个名为' users'的集合。它列出了用户列表和个人资料信息。它们都存储在mongodb中。我想添加选项,他们可以在他们的个人资料中添加更多图片。例如,我只想添加额外的" 4":" newpicture.png"到"文件"在集合中的项目中。如何在不重写所有数据的情况下为此项添加子节?

当前数据的示例

{
  "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({username:" Oran.Hammes"},{$ set:{" Documents":{" 4":" newpicture.png&# 34;}}})

enter image description here

2 个答案:

答案 0 :(得分:3)

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?。基本上,这取决于您如何设置数据库,以及为每个文档分配了多少内存。

答案 1 :(得分:2)

你可以使用db.collection.update:

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

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