如何过滤mongodb聚合中的主数组
Posted
技术标签:
【中文标题】如何过滤mongodb聚合中的主数组【英文标题】:How to filter the main array in mongodb aggregation 【发布时间】:2021-12-13 15:19:43 【问题描述】:想象一个数组进入聚合管道的一个步骤,如下所示:
[
name: "John",
address: zip: 1111
,
name: "Doe",
address: zip: 2222
]
那么,现在如果我想过滤所有 address.zip:2222 的对象,那么聚合阶段会是什么样子?我对文档有点困惑,因为它只显示了在子数组中实现 $filter 以过滤子数组本身中的项目的方法。
我知道如果我只使用 find() 函数就可以实现这一点,但这里的问题是上一阶段的,事情是动态生成的,所以我需要找到一种方法在聚合本身中过滤它。
非常感谢您对此提供的任何帮助。谢谢!
【问题讨论】:
你的测试数据和预期结果是什么 【参考方案1】:$match
?
db.collection.aggregate([
"$match":
address:
zip: 2222
])
mongoplayground
【讨论】:
【参考方案2】:会
db.collection.aggregate([
"$match":
"address.zip": 2222
])
$filter
用于从 Array 中移除元素,例如
$filter: input: [ 1,2,3,4,5,6 ], cond: $lt: ["$$this", 4] => [1,2,3]
【讨论】:
您好,我需要澄清一下。我可以使用这样的东西: $eq : [ temperature , 'pve' ] 来比较 $fitler 中的两个外部变量。但是我们不能用 $match 来做到这一点,因为我们不能在 $match 中使用像 $eq 这样的运算符。无论如何我可以比较 $match 中的外部变量值吗? 你的意思是 $eq : [ "$temperature" , 'pve' ]
?
不,温度作为 js 变量。
那么 $eq : [ temperature , "$pve" ]
?如果没有任何样本输入数据,很难猜测。以上是关于如何过滤mongodb聚合中的主数组的主要内容,如果未能解决你的问题,请参考以下文章