【问题标题】:PHP mongodb update on nested array with multiple conditionsPHP mongodb在具有多个条件的嵌套数组上更新
【发布时间】:2015-01-28 12:25:44
【问题描述】:

我已经在互联网上彻底搜索过,但没有找到解决方案。

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

`{ “_id”:ObjectId(“547acfa95ca86bec2e000029”), “session_id”:“1111”, “电子邮件”:“aasdasda@sdfsd.com”, “已处理”:0, “优惠券应用”:“”, “国家”:2, “项目” : [ { “项目 ID”:126260, “批号”:102970, “accessDays”:空, “数量”:2 }, { “项目 ID”:126260, “batchId”:空, “accessDays”:30, “数量”: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不考虑嵌套对象中的多个条件吗?

【问题讨论】:

    标签: php mongodb


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-26
      • 2013-12-26
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      相关资源
      最近更新 更多