Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB子集合数据查询_Mongodb - Fatal编程技术网

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”]}})