[英]How to update an already existing field in MongoDB
根据MongoDB文档, $ set用指定的值替换字段的值,或者如果不存在则将添加具有指定值的新字段。 我的问题是,如何在不替换现有行的情况下添加到现有行,例如:
{
"_id" : ObjectId("58dc9feca463e61042d2e462"),
"email" : "spguillen@yahoo.com",
"accountType" : "admin",
"accessKeys" : [
{
"keyId" : "d06e6640-2f98-11e7-810b-67d01c2ba6eb",
"name" : "Admin Key",
"rights" : [
"Read",
"Create",
"Delete"
]
}
]
}
我想在accessKeys字段上添加以下内容:
{"keyId": "50fcb190-5636-11e7-855a-0d21d5eb6743", "name": "Standard Key", "rights": ["Update"]}
无需覆盖现有的访问密钥。 理想情况下,还应为accountType:admin的任何帐户设置一个条件,即如果没有accessKeys,它将设置一个带有上方访问密钥的accessKey字段,但是当存在访问密钥时,请将上述访问密钥附加到现有的访问密钥上。
您可以使用$ push运算符,该运算符会将新项目追加到现有数组中。 您也可以将其用于没有accessKeys
字段的文档-在这种情况下,将创建单个元素数组:
db.col.update(
{"_id": ObjectId("58dc9feca463e61042d2e462")},
{ $push: {
"accessKeys": {"keyId": "50fcb190-5636-11e7-855a-0d21d5eb6743", "name": "Standard Key", "rights": ["Update"]}
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.