【发布时间】:2022-01-03 09:19:06
【问题描述】:
我有一个聚合函数,其中有带有管道的嵌套查找。 在其中一个管道中,我有以下内容 -
{
"$addFields": {
"ids": {
"$split": ["$id", ","]
}
}
},
{
"$lookup": {
"from": 'collection2',
"let": {"new_id": "$ids"},
"pipeline": [
{ "$match": {
"$expr": {
"$in": ["$ID", "$$new_id"]
}
}
}
],
"as": 'groups'
}
}
在上述管道中,addFields 将 "id" 中的逗号分隔 值拆分并将其添加到名为 " 的数组中 id”。
这个 "ids" 我在下面的查找中使用它来使用 "$in" 从其他集合中查找数据。
但我在 MongoDB Compass 中遇到此错误 - $in 需要一个数组作为第二个参数,发现:null。
我通过在 Compass 中的单独聚合管道中仅使用此管道进行了相同的尝试,我可以正确获取结果,但是当我在嵌套查找管道中包含相同的结果时,它不起作用并出现上述错误。
是因为嵌套还是任何局部变量或任何其他问题?
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework mongodb-compass