Dha*_*dra 1 database mongodb mongodb-query
我有一个 mongo 集合,其中已经存储了文档。单个文档的结构是这样的:
"_id":ObjectId("55c3043ab165fa6355ec5c9b"),
"address":{
"building":"522",
"coord":[
-73.95171,
40.767461
],
"street":"East 74 Street",
"zipcode":"10021"
}
}
Run Code Online (Sandbox Code Playgroud)
"persons"现在我想通过插入一个值为对象列表的新字段来更新文档[{"name":"marcus", "contact":"420"}, {"name":"modiji", "contact":"111"}],因此插入后上述文档应如下所示:
"_id":ObjectId("55c3043ab165fa6355ec5c9b"),
"address":{
"building":"522",
"coord":[
-73.95171,
40.767461
],
"street":"East 74 Street",
"zipcode":"10021"
},
"persons":[
{
"name":"marcus",
"contact":"420"
},
{
"name":"modiji",
"contact":"111"
}
]
}
Run Code Online (Sandbox Code Playgroud)
谁能帮助我正确的$set语法吗?另外,如果有人可以建议一种有效的方法来更新键的值(这是一个对象列表),以便我可以在现有列表中推送一些新对象,那将非常有帮助。
您可以使用该updateOne命令和$set运算符来实现它。
db.<Collection-Name>.updateOne({
"_id":ObjectId("55c3043ab165fa6355ec5c9b")
}, {
"$set": {
"persons":[
{
"name":"marcus",
"contact":"420"
},
{
"name":"modiji",
"contact":"111"
}
]
}
})
Run Code Online (Sandbox Code Playgroud)
如果要将附加数据推送到数组中,可以使用以下命令。
db.<Collection-Name>.updateOne({
"_id":ObjectId("55c3043ab165fa6355ec5c9b")
}, {
"$push": {
"persons": {
"name":"sample",
"contact":"1234"
}
}
})
Run Code Online (Sandbox Code Playgroud)
要在单个命令中推送多个对象数组,请使用以下查询
db.<Collection-Name>.updateOne({
"_id":ObjectId("55c3043ab165fa6355ec5c9b")
}, {
"$push": {
"persons": {
"$each": [
{
"name":"sample1",
"contact":"5678"
},
{
"name":"sample2",
"contact":"90123"
}
]
}
}
})
Run Code Online (Sandbox Code Playgroud)