MongoDB子集合数据查询

时间:2018-09-06 19:03:52

标签: mongodb

我有一个结构合理的文件

[{
    "_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})

但是它仅返回第一个匹配值对象。 谢谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

如果您使用的是3.2版本,则可以使用$ filter但具有聚合功能,但找不到。

collection.aggregate({"_id":"DQE", items: {
            $filter: {
               input: "$values",
               cond: { $in: [ "$$values.name", ['asdc','ce53'] ] }
            }
         }}