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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果mongo db中存在/不存在字段,如何向对象添加数组数据相关的知识,希望对你有一定的参考价值。

这是我的预期结果:

 "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") 
    ] 
  } 

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

当我第一次添加时,它应该创建Forgotpassword字段,并且在updatedon中应该存储

当我第二次在Forgotpassword里面添加时,updatedon应该重复一遍,它会存储在updateon中

这是我的查询:

 $updateQuery  =   $queryUpdate->update(

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

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

 array('upsert'=>1)

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

使用upsert和new以及findandmodify和addtoset它正在工作

以上是关于如果mongo db中存在/不存在字段,如何向对象添加数组数据的主要内容,如果未能解决你的问题,请参考以下文章

mongo 更新字段值,若不存在则自动创建

请教下mongo的模糊搜索中字段有特殊符号怎么办

mongo操作

Mongo:如果文档不存在则创建,否则啥也不做

Mongo:如果文档不存在则创建,否则啥也不做

mongo 查询某个字段的值不为空列表!