如何只获取数组的匹配元素?

时间:2013-11-28 07:09:24

标签: mongodb

我的数据库内容是

[
  {
    "_id": "com.aa.bb",
    "rating": [
      {
        "user": "BDB",
        "value": "1"
      },
      {
        "user": "BD",
        "value": "2"
      }
    ]
  }
]

我想查找用户'BD'的记录。当我执行以下查询时,它返回用户'BD'和“BDB”的记录。是否可以找到完全匹配?

使用的查询 - db.coll.find({'_ id':'com.aa.bb','rating.user':'BD'}

1 个答案:

答案 0 :(得分:4)

您可以使用aggregation执行此操作。

首先,您使用$unwind operator将数组转换为文档流。

然后使用$match过滤您想要的用户。

db.coll.aggregate(
    { 
        $match: { 
            "_id": "com.aa.bb"
        }
    },
    {
        $unwind:"$rating"
    },
    {
        $match: {
            "rating.user":"BD"
        }
    }
})