Пн go агрегация совпадение нескольких значений - PullRequest
1 голос
/ 09 марта 2020

У меня есть следующие документы

  {
       name: 'John',
       Address :'street 1 '
   },
   {
       name: 'Jane',
       Address :'street 2 '
   },
   {
       name: 'Smith',
       Address :'street 3 '
   }

Я хочу найти несколько документов с разными значениями в mon go конвейер агрегации.

Это означает, что name = ('John', ' Smith "). Я ожидаю, что результат будет

{
   name: 'John',
   Address :'street 1 '
},
{
   name: 'Smith',
   Address :'street 3 '
}

Мой код:

db.articles.aggregate($match: { $or: [{ name: 'John' }, { name: 'Smith' }]);

Это дает пустое значение. Возможно ли получить документ таким образом?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Вам необходимо использовать оператор $in

Оператор $ in выбирает документы, в которых значение поля равно любому значению в указанном массиве.

[{
    $match: {
        name: {
            $in: ['John', 'Smith']
        }
    }
}]

Ссылка: Документы MongoDB: $ in

0 голосов
/ 10 марта 2020

В вашем запросе не хватает пары скобок.

db.articles.aggregate ([{$ match: {$ or: [{name: 'John'}, {name: 'Smith'}]}}]);

Но вместо этого вы можете уменьшить запрос до значения ниже

db.articles.aggregate ([{$ match: {name: {$ in: ['John', 'Smith']}}}]) *

...