Мангуста фильтр вложенных документов - PullRequest
0 голосов
/ 20 февраля 2019

Имея схему вроде:

     {
  "_id": ObjectId("..."),
  "views": [
    {
      "name": "AAA",
      "permissions": ['PERM_1','PERM_2']
    },
    {
      "name": "BBB",
      "permissions": ['PERM_2']
    },
    {
      "name": "CCC",
      "permissions": ['PERM_3']
    }]
}

Я хотел бы получить результат с представлениями, которые содержат 'PERM_1' и 'PERM_3', например:

{
 "_id": ObjectId("..."),
 "views": [
        {
  "name": "AAA",
  "permissions": ['PERM_1','PERM_2']
 },
 {
   "name": "CCC",
   "permissions": ['PERM_3']
 }]
}

Однако я недействительно удалось получить результат, который я хотел.Вот мой запрос:

Schema.aggregate([
{
    $project: {
        views: {
            $filter: {
                input: '$views.permissions',
                as: 'perm',
                cond: {
                    ????? // return only PERM_1 and PERM_3
                }
            }
        }
    }
}])

Спасибо за помощь.

1 Ответ

0 голосов
/ 20 февраля 2019

Содержимое условия может быть:

$filter: {
  input: '$views',
  as: 'perm',
  cond: {
    cond: {
          $gt: [
            {
              $size: {
                $setIntersection: ['$$perm.permissions',['PERM_1','PERM_2']],
              },
            },
            0,
          ],
        },
  }
}

Более подробную информацию можно найти в технической документации mongo

...