繁体   English   中英

PHP mongodb在多个条件下对嵌套数组进行更新

[英]PHP mongodb update on nested array with multiple conditions

我已经在互联网上进行了彻底的搜索,但是没有找到解决方案。

问题:我想更新此文档中的数量。 条件-itemId = 126260,accessDays = 30

`{ "_id" : ObjectId("547acfa95ca86bec2e000029"), "session_id" : "1111", "email" : "aasdasda@sdfsd.com", "isProcessed" : 0, "couponApplied" : "", "countryId" : 2, "items" : [ { "itemId" : 126260, "batchId" : 102970, "accessDays" : null, "quantity" : 2 }, { "itemId" : 126260, "batchId" : null, "accessDays" : 30, "quantity" : 2 } ] }`

我正在尝试使用PHP做到这一点:

`$condition = array( "session_id"=>'1111', 'items.itemId'=>126260, 'items.accessDays'=>30);
$new_values = array( '$set' => array("items.$.quantity" => 10) );

$cart_coll->update($condition, $new_values);`

但是,当我运行此代码时,它将更新第一个嵌套对象,而不是第二个。

我在这里做错了什么? mongodb是否不考虑嵌套对象中的多个条件?

您需要使用$ elemMatch使数组标记在正确的位置。 所以你的$ query变成

$condition = array( "session_id"=>'1111',
"items" => array(
'$elemMatch'=>array("itemId"=>126260, 'accessDays'=>30)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM