Mongo,从子级中删除数组父元素

时间:2018-09-19 10:23:42

标签: arrays mongodb aggregation-framework

使用聚合框架,我想根据涉及给定数组子元素的某些条件来过滤数组中的某些元素

这里有一个文档示例

/* 1 */
{
    "_id" : 1,
    "articles" : [ 
        {
            "suppliers" : [ 
                {
                    "exports" : [ 
                        {
                            "channelId" : 'A'
                        }
                    ]
                }
            ]
        }, 
        {
            "suppliers" : [ 
                {
                    "exports" : []
                }
            ]
        }
    ]
}

/* 2 */
{
    "_id" : 2,
    "articles" : [ 
        {
            "suppliers" : [ 
                {
                    "exports" : [ 
                        {
                            "channelId" : 'A'
                        }
                    ]
                }
            ]
        }
    ]
}

/* 3 */
{
    "_id" : 3,
    "articles" : [ 
        {
            "suppliers" : [ 
                {
                    "exports" : [
                        {
                            "channelId" : 'B'
                        }
                    ]
                }
            ]
        }
    ]
}

假设我想在'articles.suppliers.exports.channelId'='A'时过滤掉article数组中的所有元素。

这是示例结果

/* 1 */
{
    "_id" : 1,
    "articles" : [   
        {
            "suppliers" : [ 
                {
                    "exports" : []
                }
            ]
        }
    ]
}

/* 2 */
{
    "_id" : 2,
    "articles" : []
}

/* 3 */
{
    "_id" : 3,
    "articles" : [ 
        {
            "suppliers" : [ 
                {
                    "exports" : [
                        {
                            "channelId" : 'B'
                        }
                    ]
                }
            ]
        }
    ]
}

编辑

that question的区别在于,如果条件在最后一个数组中得到验证,那么我们要删除第一个数组的所有子元素,在旧问题中,我们只希望删除最后一个数组中的元素< / p>

0 个答案:

没有答案