我的数据库内容是
[
{
"_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'}
答案 0 :(得分:4)
您可以使用aggregation执行此操作。
首先,您使用$unwind operator将数组转换为文档流。
然后使用$match过滤您想要的用户。
db.coll.aggregate(
{
$match: {
"_id": "com.aa.bb"
}
},
{
$unwind:"$rating"
},
{
$match: {
"rating.user":"BD"
}
}
})