使用聚合框架,我想根据涉及给定数组子元素的某些条件来过滤数组中的某些元素
这里有一个文档示例
/* 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>