Перейдите в оболочку 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”]] } так что, похоже, проблема в передаче массива. Спасибо за любые советы!

Ответы на вопрос(1)

Ваш ответ на вопрос