Структура агрегування MongoDB відповідає АБО


Відповіді:


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

Так само, оскільки $matchоператор просто бере те, що ви зазвичай вкладаєте у find()функцію


84

В даному конкретному випадку, коли ви $or-ний той же поле , то $inоператор буде кращим вибором, а також тому , що вона збільшує читаність:

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

Згідно з документами MongoDB, $inу цьому випадку рекомендується використовувати :

$ або проти $ in

При використанні $ або <expressions>, які перевіряють рівність значення того самого поля, використовуйте оператор $ in замість оператора $ або.

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


1
Згідно з документами Mongo, цей "найефективніший" спосіб зробити це для порівняння рівності, такий як ваш приклад. Див. Docs.mongodb.org/manual/reference/operator/query/or/#_S_or%22
Mark Gibaud


1
Я вважаю, що $ або не є оператором агрегування.
Пол Шапіро,

@PaulShapiro: Сподіваюсь, ви не проголосували через це. Для всіх, будь ласка, подумайте про коментування причини перед голосуванням вниз, це допомагає всім. Ось посилання на оператори булевої агрегації -> $ or
Amol M Kulkarni

Ваша відповідь неправильна, і, як ви бачите, я вже коментував, пояснюючи, де і як неправильна відповідь.
Пол Шапіро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.