假设我有一个名为 a 的集合collection_a,其中包含对名为 的集合 b 的查找collection_b。如果集合包含一个名为 的字段primary_color并且查找包含一个名为 的字段available_colors。我如何比较primary_color以available_colors查看列表中primary_color是否包含当前值available_colors?
我尝试了以下但它在聚合匹配中不起作用,
{'primary_color': {'$in': '$collection_b.available_colors'}}.
Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我,我做错了什么?
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"
]
}
Run Code Online (Sandbox Code Playgroud)
管道阶段:
{ $project: {
filteredChildren: {
$filter: {
input: "$moduleChildren",
as: "moduleChild",
cond: { $in : ["$$moduleChild._id", "$permissions"] }
}
},
}}
Run Code Online (Sandbox Code Playgroud)
我需要过滤"moduleChildren"数组以仅显示哪些ID在"权限"数组中.我试过"$$ ROOT.permissions"和"$$ CURRENT.permissions",但没有一个能正常工作.我总是得到一个错误,$ in缺少数组作为参数.当我像这样硬编码数组时它起作用:cond: { $in : ["$$moduleChild._id", [“module_settings_general", "module_settings_emails”]] }所以看起来问题在于传递数组.谢谢你的任何建议!