如果mongo db中存在/不存在字段,如何向对象添加数组数据

时间:2017-12-21 12:15:26

标签: mongodb multidimensional-array nosql insert-update findandmodify

这是我的预期结果:

 "ForgotPassword": [
     {
       "UpdatedOn": ISODate("2017-12-06T11:23:23.0Z"),
    },
     {
       "UpdatedOn": ISODate("2017-12-06T11:45:13.0Z"),
    }
  ]

这就是我得到的:

"ForgotPassword": {
     "UpdatedOn": [
       ISODate("2017-12-20T11:48:15.0Z"),
       ISODate("2017-12-20T11:48:30.0Z"),
       ISODate("2017-12-21T11:57:21.0Z") 
    ] 
  } 

实际上忘记密码字段不会出现在集合文档中。

当我添加第一个时间时,它应该创建忘记密码字段,而 updatedon 里面应该存储

当我在忘记密码中添加第二时间时, updatedon 应该重复我的内容 updateon

这是我的疑问:

 $updateQuery  =   $queryUpdate->update(

 array("CollaboratorId"=>(int)$collaboratorId), //query condition

 array('$addToSet'=>array('ForgotPassword.UpdatedOn'=>$currentDate)),

 array('upsert'=>1)

 );

1 个答案:

答案 0 :(得分:0)

$queryUpdate->findAndModify( 
array("CollaboratorId"=> (int)$collaboratorId),
array('$addToSet'=> array('ForgotPassword' =>array("UpdatedOn" => $currentDate))),
array('new' => 1,"upsert"=>1)
);

upsert new findandmodify addtoset 正在运作