【发布时间】:2018-04-06 03:07:52
【问题描述】:
我正在尝试将数组元素推送到以下文档结构的内部数组中
{
"_id" : ObjectId("599558a4a331801fe264bbb3"),
"zone" : "asia",
"country_list" : [
{
"country_name" : "india",
"state_list" : [
{
"state_name" : "kerala"
},
{
"state_name" : "tamilnadu"
}
]
},
{
"country_name" : "pak",
"state_list" : [
{
"state_name" : "ins"
}
]
}
]
}
我想更新后的结构
{
"_id" : ObjectId("599558a4a331801fe264bbb3"),
"zone" : "asia",
"country_list" : [
{
"country_name" : "india",
"state_list" : [
{
"state_name" : "kerala",
"city_list" : [
{
"cityname" : "tvm"
},
{
"cityname" : "kchi"
},
]
},
{
"state_name" : "tamilnadu"
}
]
},
{
"country_name" : "pak",
"state_list" : [
{
"state_name" : "ins"
}
]
}
]
}
但是当我尝试以下代码时
$result = $this->collection->findOneAndUpdate(array(
"country_list.state_list.state_name"=>$this->getState()
), array(
'$push'=>array("country_list.state_list.$.city_list"=>array("city_name"=>$this->getCity()))
));
我得到了错误
未捕获的 MongoDB\Driver\Exception\RuntimeException: 无法使用部分 (country_list of country_list.state_list.0.city_list) 遍历元素 ({country_list: [ { country_name: "india", state_list: [ { state_name: "喀拉拉邦“}, { state_name: "tamilnadu" } ] }, { country_name: "pak", state_list: [ { state_name: "ins" } ] } ]})
我正在使用 mongo 3.4 和 php 7
【问题讨论】:
-
您可能想在这里查看各种答案,因为我认为您目前需要使用完全不同的方法:stackoverflow.com/questions/24046470/…