MongoDB子集合数据查询
我有一份有结构的文件MongoDB子集合数据查询,mongodb,Mongodb,我有一份有结构的文件 [{ "_id": "ECF", "values": [ { "name": 'cc1', "value": 112 }, { "name": 'dv2', "value": 34234 } ] }, , { "_id": "DQE", "values": [
[{
"_id": "ECF",
"values": [
{
"name": 'cc1',
"value": 112
},
{
"name": 'dv2',
"value": 34234
}
]
},
, {
"_id": "DQE",
"values": [
{
"name": 'ce53',
"value": 1124,
},
{
"name": 'asdc',
"value": 332,
}
]
}]
值有大量的对象,所以我需要对它们进行过滤。所以问题是如何得到过滤后的值
我确实查询了collection.find({“\u id”:“DQE”,“values.name”:{$in:['asdc','ce53']},{“values.$”:1})
但它只返回第一个匹配的值对象。
感谢您的帮助:)如果您使用的是3.2版本,您可以使用$filter,但使用聚合,而不是查找
collection.aggregate({"_id":"DQE", items: {
$filter: {
input: "$values",
cond: { $in: [ "$$values.name", ['asdc','ce53'] ] }
}
}}
您是否尝试删除部分{“values.$”:1})?是的,然后我得到所有值arrayTry
collection.aggregate({“$project”:{“items”:{“$filter”:{“input”:“$values”,“cond”:{“$in”:[“$$this.name”,[“asdc”,“ce53”]}})