0

我有一个 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
}
4

1 回答 1

2

使用位置 $ 运算符

$criteria = array("accounts.email" => $emailAddress);
$document = array(
    '$set' => array(
        'accounts.$.password' => $newPassword
     )
);

$collection->update($criteria, $document);
于 2013-10-22T21:43:31.410 回答