MongoDB - Найти и вернуть все элементы массива в каждом документе - PullRequest
0 голосов
/ 03 декабря 2018

поэтому у меня есть эта система, где пользователи могут вводить теги, но я хочу добавить предложения / автоматически дополнять динамические данные из всех предыдущих тегов в базе данных.

Вот как выглядят данные:

    collection = [
      {
        title: "Avengers",
        tags:["si-fi", "powers", "super-heroes", "iron-man"],
        ...
      },
      {
        title: "Lego Movie"
        tags:["spider-man", "bottle", "man of steel"],
        ...
      }
      ...
    ]

Поэтому я хочу получить массив всех тегов, соответствующих строке поиска.

Например, если япоиск с 'man', я хочу, чтобы возвращаемые данные были:

[
  "iron-man",
  "spider-man",
  "man of steel"
]

1 Ответ

0 голосов
/ 03 декабря 2018

Я думаю, что это невозможно сделать прямым запросом.Следующая агрегация может сделать,

    db.collection.aggregate([{
        $unwind: '$tags'
    }, {
        $match: {
            'tags': { $regex: 'man' }
        }
    }, {
        $group: {
            _id: null,
            tags: { '$addToSet': '$tags' }
        }
    }]);

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...