MongoDB如何为嵌套数组制作投影过滤器

时间:2019-03-18 10:58:52

标签: mongodb filter bson

我的json数据结构如下

"ArticleInfo": [{
    "InfArt": {
        "langs": [{
                "code": 1,
                "text": "Technische Information"
            },
            {
                "code": 4,
                "text": "Technical Information"
            },
            {
                "code": 6,
                "text": "Informations techniques"
            },
        ]
    }
}]

按照我写的shell命令filter的用法类似

db.article.aggregate(
    {
        $match: {
            "articleNumber": "123123"
        },
    },
    {
        $project: {
            'ArticleInfo.InfArt.langs': {
                $filter: {
                  input: "$ArticleInfo.InfArt.langs",
                  as: "item",
                  cond: { $eq: [ '$$item.code', 4 ] }
                }
            }
        }
    }
)

但是$eq看起来不可行,它给出了一个空列表

我想知道langs数组中的特定项目,我写错了吗?

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

db.article.aggregate(
    { $unwind: '$ArticleInfo' },
    {
        $project: {
            'A': {
                $filter: {
                  input: "$ArticleInfo.InfArt.langs",
                  as: "item",
                  cond: { $eq: [ '$$item.code', 4 ] }
                }
            }
        }
    }
)