Перейдите в оболочку mongo или robomongo на любом графическом интерфейсе, который вы используете, и выполните эту команду
ибудь, пожалуйста, скажите мне, что я делаю неправильно?
структура документа БД:
{
"_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", чтобы показать только модули, идентификаторы которых находятся в массиве "permissions". Я пробовал "$ ROOT.permissions" и "$ CURRENT.permissions", но ни один из них не работает. Я всегда получаю сообщение об ошибке, что $ in отсутствует массив в качестве аргумента. Это работает, когда я жестко кодирую массив следующим образом:cond: { $in : ["$$moduleChild._id", [“module_settings_general", "module_settings_emails”]] }
так что, похоже, проблема в передаче массива. Спасибо за любые советы!