首页 > 解决方案 > 匹配数组中的多个条件

问题描述

我有以下内容:

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

我正在尝试进行匹配,以获取用户被选中并选择为真的所有优惠对象。

我尝试了以下方法:

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

但是,如果数组中有一个 ted 和一个 selected true 并且不需要在同一个对象内进行该组合,这将给我文档。

标签: mongodbmongoose

解决方案


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

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

推荐阅读