如何使用 PHP 使用子文档 MongoId 更新 MongoDb 文档的一部分


How to update part of a MongoDb document by using the child documents MongoId using PHP

我有一个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);