根据 PHP 中的 2 个条件更新 MongoDB 中的数量

Update quantity in MongoDB based on 2 conditions in PHP

我正在 MongoDB 中制作购物车,如果用户添加已经添加的产品,我想更新数量字段。

这是我的文档:

{
    "_id" : "mzipdNS2Xyw-IqV085KrBe5RZucp9M_KqDSYjPinq20",
    "products" : [ 
        {
            "productId" : "27122",
            "quantity" : NumberLong(1),
            "displayPrice" : "€ 599.00",
            "price" : NumberLong(599),
            "name" : "APPLE IPHONE 5S 16GB SPACE GRAY"
        }
    ]
}

我正在运行下面的代码来更新我的文档,但是它不起作用,有人可以帮助我吗?

$collection->update(array("_id" => $userId, array("products" => array("productId" => $productId))),
                array('$set' => array("quantity" => $newQuantity
                ))
            );

为了更新产品数组中的正确项目,您必须使用 positional $ operator

$collection->update(
    array(
        "_id" => $userId,
        "products.productId" => $productId,
    ),
    array('$set' => array("products.$.quantity" => $newQuantity))
);