如何使用PHP使用子文档MongoId更新部分MongoDb文档
我有一份Mongo文件,如下所示。使用PHP我需要更新帐户的密码,我可以通过电子邮件或id访问它 我认为在执行更新时,以下代码将使文档的这一部分成为焦点:如何使用PHP使用子文档MongoId更新部分MongoDb文档,php,mongodb,Php,Mongodb,我有一份Mongo文件,如下所示。使用PHP我需要更新帐户的密码,我可以通过电子邮件或id访问它 我认为在执行更新时,以下代码将使文档的这一部分成为焦点: $criteria = array("accounts.email" => $emailAddress); $document = array( '$set' => array( "accounts.password" => $newPassword ) ); 但在进行更新时,没有任何内容
$criteria = array("accounts.email" => $emailAddress);
$document = array(
'$set' => array(
"accounts.password" => $newPassword
)
);
但在进行更新时,没有任何内容得到更新。你知道我如何通过只提供电子邮件地址或id来更新密码吗
{
"accounts": [
{
"id": ObjectId("5266cf3c9b7e7a292b000002"),
"main": true,
"username": "username_a",
"password": "password_a",
"email": "a@a.com"
},
{
"id": ObjectId("5266cf3c9b7e7a292b000004"),
"main": true,
"username": "username_a",
"password": "password_b",
"email": "b@b.com"
}
],
"active": true
}
使用
嗨,比约里,我试过你的建议,但是运气不好。文档中的数据保持不变,奇怪的是也没有返回错误。有什么线索吗?我设法从系统中得到了一条错误消息:“如果没有包含数组的相应查询字段,就无法应用位置运算符”。错误很明显是我的,一个打字错误。位置$operator正是我所需要的。
$criteria = array("accounts.email" => $emailAddress);
$document = array(
'$set' => array(
'accounts.$.password' => $newPassword
)
);
$collection->update($criteria, $document);