web-dev-qa-db-ja.com

MongoDB集約フレームワークの一致OR

$ matchでORを実行することはできますか?

私はこのようなことを意味します:

db.articles.aggregate(
    { $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);
86
Gergely Németh
$match: { $or: [{ author: 'dave' }, { author: 'john' }] }

同様に、$match演算子は、通常find()関数に入力するものを取るだけなので、

149
Sammaye

あなたが$or- ing同じフィールドであるこの特定の場合、$in演算子は読みやすさを向上させるため、より良い選択です。

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

MongoDBのドキュメントによると、この場合は$inの使用が推奨されます。

$ or vs $ in

同じフィールドの値の等価性チェックである<式>で$ orを使用する場合、$ or演算子の代わりに$ in演算子を使用します。

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

72
Amol M Kulkarni