如何过滤mongodb聚合中的主数组
How to filter the main array in mongodb aggregation
想象一个数组进入聚合管道的一个步骤,如下所示:
[{
name: "John",
address: { zip: 1111 }
},{
name: "Doe",
address: { zip: 2222 }
}]
那么,现在如果我想过滤所有 address.zip: 2222 的对象,聚合阶段会是什么样子?我对文档有点困惑,因为它只显示了在子数组中实现 $filter 以过滤子数组本身中的项目的方法。
我知道如果我只使用 find() 函数就可以实现,但这里的问题是前一阶段,事物是动态生成的,所以我需要找到一种方法在聚合本身中过滤它.
非常感谢有关此的任何帮助。谢谢!
$match
?
db.collection.aggregate([
{
"$match": {
address: {
zip: 2222
}
}
}
])
会是
db.collection.aggregate([
{
"$match": {
"address.zip": 2222
}
}
])
$filter
用于从数组中删除元素,例如
{ $filter: { input: [ 1,2,3,4,5,6 ], cond: {$lt: ["$$this", 4] } } } => [1,2,3]
想象一个数组进入聚合管道的一个步骤,如下所示:
[{
name: "John",
address: { zip: 1111 }
},{
name: "Doe",
address: { zip: 2222 }
}]
那么,现在如果我想过滤所有 address.zip: 2222 的对象,聚合阶段会是什么样子?我对文档有点困惑,因为它只显示了在子数组中实现 $filter 以过滤子数组本身中的项目的方法。
我知道如果我只使用 find() 函数就可以实现,但这里的问题是前一阶段,事物是动态生成的,所以我需要找到一种方法在聚合本身中过滤它.
非常感谢有关此的任何帮助。谢谢!
$match
?
db.collection.aggregate([
{
"$match": {
address: {
zip: 2222
}
}
}
])
会是
db.collection.aggregate([
{
"$match": {
"address.zip": 2222
}
}
])
$filter
用于从数组中删除元素,例如
{ $filter: { input: [ 1,2,3,4,5,6 ], cond: {$lt: ["$$this", 4] } } } => [1,2,3]