MongoDB aggregation framework match OR


можно ли сделать или в $match?

Я имею в виду что-то вроде этого:

db.articles.aggregate(
    { $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);
2 74

2 ответа:

$match: { $or: [{ author: 'dave' }, { author: 'john' }] }

так, с $match оператор просто берет то, что обычно ставят в find() функции

в данном конкретном случае, где вы находитесь $or - ing то же самое поле на $in оператор был бы лучшим выбором, также потому, что он повышает читаемость:

$match: { 
  'author': { 
    $in: ['dave','john'] 
  } 
}

согласно документам MongoDB, используя $in в этом случае рекомендуется:

$или против $in

при использовании $или с , которые являются равенства проверяет значение того же поля, вместо этого используйте оператор $in из $или оператор.

https://docs.mongodb.com/manual/reference/operator/query/or/#or-versus-in