所以我有一个名为' 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;}}})
答案 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中称为文档),然后您只将新项目添加到您的记录中。 希望这会有所帮助。