我有两个集合,一个是事件,另一个是订单。 我必须过滤每个事件的订单。所以我正在做的是获取所有广告事件,然后查找符合某些特定条件的订单。
[
{
$match: { type: 'FOLLOWUP' }
},
{
$lookup: {
from: 'orders',
as: 'orders',
pipeline: [
{
$match: {
'status': { $in: '$activeFilter' }
}
}
]
}
}
]
在上面的示例中,status
包含一些特定的字符串,activeFilter
具有包含该事件的事件状态的字符串数组。 activeFilter
是一个数组,但我收到错误,$in
需要一个数组。
如有任何帮助,我们将不胜感激。
最佳答案
您正在使用聚合管道,并且 $in
运算符在 find()
查询和聚合管道中的工作方式不同。在聚合管道中,语法如下:
{ $in: [ <expression>, <array expression> ] }
因此,$in
应该有 2 个参数,其中 value
是第一个参数,array
是第二个参数。您应该像这样更改代码:
"$match": {
"$expr": {
"$in": ["$status", "$activeFilter"]
}
}
关于node.js - 如何在mongodb聚合中将动态值传递给$in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69419676/