我有一个结构合理的文件
[{
"_id": "ECF",
"values": [
{
"name": 'cc1',
"value": 112
},
{
"name": 'dv2',
"value": 34234
}
]
},
, {
"_id": "DQE",
"values": [
{
"name": 'ce53',
"value": 1124,
},
{
"name": 'asdc',
"value": 332,
}
]
}]
值有很多对象,所以我需要过滤它们。那么问题是如何获得过滤后的值?
我确实查询了collection.find({"_id":"DQE", "values.name":{$in:['asdc','ce53']}}, {"values.$":1})
但是它仅返回第一个匹配值对象。 谢谢您的帮助:)
答案 0 :(得分:0)
如果您使用的是3.2版本,则可以使用$ filter但具有聚合功能,但找不到。
collection.aggregate({"_id":"DQE", items: {
$filter: {
input: "$values",
cond: { $in: [ "$$values.name", ['asdc','ce53'] ] }
}
}}