Добавить шаблон внутри $ in и агрегировать - PullRequest
0 голосов
/ 31 октября 2018

Я добавляю шаблон внутри $in в функции aggregate.

Я знаю, что значения существуют, но мой запрос ничего не возвращает для шаблона.

Вот мой запрос:

db.collection.aggregate([{"$unwind":"$tags"},
{'$match': 
{
'tags.tag.name': {
    "$in": ['AA', 'CS', '/Nie/i']},
'auditRun': 12345}},
{'$project': {
 'tags.tag.name':1,
  '_id': 0}},])

Я получаю результаты для AA и CS , но я ничего не получаю назад за Nie .

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

Что я делаю не так?

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете использовать оператор $or вместе с $regex для отдельного поиска элементов, по которым требуется поиск по регулярному выражению. Его нельзя объединить в один список предметов.

db.collection.aggregate([{
    "$unwind": "$tags"
},
{
    '$match': {
        $or: [
          {'tags.tag.name': {"$in": ['AA','CS']}},
          {'tags.tag.name': { $regex: 'Nie', $options: 'i'}}
        ],
      'auditRun': 12345
    }
},
{
    '$project': {
        'tags.tag.name': 1,
        '_id': 0
    }
},
])

Также хочу отметить, что если вам нужны только те, которые начинаются с Nie, то ваше регулярное выражение должно быть ^Nie

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