我有一个Mongo文档,如下所示。使用PHP,我需要更新帐户的密码,我可以通过电子邮件或ID访问它。
我认为以下代码将在执行更新时将焦点集中在文档的部分:
$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
}
使用位置 $ 运算符。
$criteria = array("accounts.email" => $emailAddress);
$document = array(
'$set' => array(
'accounts.$.password' => $newPassword
)
);
$collection->update($criteria, $document);