我已经在互联网上彻底搜索了这个,但还没有找到解决方案。
问题:我想更新本文档中的数量。标准 - 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不考虑嵌套对象中的多个条件吗?
答案 0 :(得分:0)
您需要使用$elemMatch来使数组标记位于正确的位置。所以你的$查询变为
$condition = array( "session_id"=>'1111',
"items" => array(
'$elemMatch'=>array("itemId"=>126260, 'accessDays'=>30)));