匹配数组中的多个条件

时间:2019-03-25 03:40:52

标签: mongodb mongoose

我有以下内容:

    offers: [
        {user: 'jon', price: 200, selected: false}, 
        {user: 'ted', price: 100, selected: true}
    ]

我正在尝试进行匹配,以获取用户被选中并为true的所有商品对象。

我尝试了以下操作:

$match: {
    "offers.user": "ted"
    "offers.selected": true
}

但是,如果数组中有ted和selected true,而不必在同一个对象中使用该组合,这将为我提供文档。

2 个答案:

答案 0 :(得分:1)

您需要使用$elemMatch查询运算符来匹配数组中的多个条件

{ "$match": {
  "offers": {
    "$elemMatch": {
      "user": "ted"
      "selected": true
    }
  }
}}

答案 1 :(得分:1)

您希望猫鼬elemMatch用于您的情况。

query.elemMatch('comment', { author: 'autobot', votes: {$gte: 5}})

请参阅文档here