【发布时间】:2023-03-26 02:39:02
【问题描述】:
谁能告诉我我做错了什么?
db文档结构:
{
"_id" : "module_settings",
"moduleChildren" : [
{
"_id" : "module_settings_general",
"name" : "General",
},
{
"_id" : "module_settings_users",
"name" : "Users",
},
{
"_id" : "module_settings_emails",
"name" : "Emails",
}
],
“permissions” : [
"module_settings_general",
"module_settings_emails"
]
}
管道阶段:
{ $project: {
filteredChildren: {
$filter: {
input: "$moduleChildren",
as: "moduleChild",
cond: { $in : ["$$moduleChild._id", "$permissions"] }
}
},
}}
我需要过滤“moduleChildren”数组以仅显示 ID 位于“permissions”数组中的模块。我试过“$$ROOT.permissions”和“$$CURRENT.permissions”,但它们都不起作用。我总是收到 $in 缺少数组作为参数的错误。当我像这样对数组进行硬编码时它可以工作:cond: { $in : ["$$moduleChild._id", [“module_settings_general", "module_settings_emails”]] } 所以看来问题在于数组的传递。
感谢您的任何建议!
【问题讨论】:
标签: arrays mongodb mongodb-query aggregation-framework