使用php将新内部对象插入现有对象mongodb

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用php将新内部对象插入现有对象mongodb相关的知识,希望对你有一定的参考价值。

我的mongo系列中有以下文档

{"_id":"5a9e97557cf28c1c2d00003d",
"user_id":"avi12",
"name":"Avinash",
"Friends":{
"avi12":{
"From":"avi12",
"To":"chandu",
"Friend_status":"pending",
"Time":1520342869,
"requestid":"s_avi12_first"
},
"second_user":{
"From":"avi122",
"To":"chandu2",
"Friend_status":"pending2",
"Time":1520342869,
"requestid":"2s_avi12_first"
}
}
}

我想在Friends对象中插入新对象(“第三用户”)。我试过以下代码......

$update_friend_send=array(
                        $user_name=>array(
                            "From"=>$user_name,
                            "To"=>$To,
                            "Friend_status"=>"pending",
                            "Time"=>time(),
                            "requestid"=>"s_".$user_name."_".$sender_id
                            ));


                    $condition = array("_id"=>$realmongoid);
                    $data = array('$set' => array('Friends.$' =>$update_friend_send));

                    $collection->update($condition,$data);

但是当我运行这段代码时,它通过插入新的(第三个用户)对象并删除旧对象(avi12和第二个)来更新Friends对象,只有最后一个是重命名。

如何将新对象插入到保留以前数据的Friends对象中,我也不想使用数组。请帮忙...

答案

如果要在现有数组中推送新对象,则需要使用$push而不是$set

以上是关于使用php将新内部对象插入现有对象mongodb的主要内容,如果未能解决你的问题,请参考以下文章

将新的核心数据对象插入到多个 NSOrderedSet 会忽略索引

将新对象插入特定数组索引

如何使用 php/laravel 在现有数组对象中插入键值对?

为啥使用 MongoDB 的 $push 将新对象添加到数组时添加了带有 ObjectID 的 _id?

将新对象添加到现有 json

将新属性添加到另一个数组中的现有对象数组