我有以下文件:
{
"_id":"575322d9585095d9929554ba",
"Level1":{
"Level2":[
{
"Level3a":{
"Level4":{
"Level5":{
"name":"John",
"surname":"Matthew"
}
}
}
},
{
"Level3a":{
"Level4":{
"Level5":{
"name":"Emma",
"surname":"Jackson"
}
}
}
}
]
}
}
我需要在Level5插入新的名字和姓氏。我尝试了$ push方法,但是我得到了虚线字段..对于存储无效的错误:
db.names.update({ "_id":"575322d9585095d9929554ba" },
{
$push: {
"Level1.Level2":
{ $each: [ { "Level3a.Level4.Level5.name": "Greg" },
{ "Level3a.Level4.Level5.surname": "Cook" }] } } } )
似乎push不允许在分层数组中插入新数据或者我错了?
答案 0 :(得分:0)
您的查询存在问题,因为$each
用于向同一个数组添加多个值....
由于我们只向数组添加一个条目,因此我们不需要使用$each
所以查询看起来像这样:
db.vnenad.update({
"_id" : "575322d9585095d9929554ba"
},
{
$push : {
"Level1.Level2" : {
"Level3a" : {
"Level4" : {
"Level5" : {
"name" : "johnny",
"surname" : "rambo"
}
}
}
}
}
})
因为我正在对您的查询进行调整,所以我决定使用文档创建变量以插入数组,然后我更容易调整您的查询 - 请参阅下面的内容:
var doc = {
"Level3a" : {
"Level4" : {
"Level5" : {
"name" : "johnny",
"surname" : "rambo"
}
}
}
}
db.vnenad.update({
"_id" : "575322d9585095d9929554ba"
},
{
$push : {
"Level1.Level2" : doc
}
})