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


回答:


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

$match演算子は、通常はfind()関数に入力するものをそのまま使用するため、


84

あなたがしているこの特定のケースでは、$or-ing 同じフィールドを$inオペレータは、可読性を高めるためにも、より良い選択のようになります。

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

MongoDBのドキュメントによると、$inこの場合は使用することをお勧めします:

$ or対$ in

同じフィールドの値の等価チェックである<式>で$ orを使用する場合は、$ or演算子の代わりに$ 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
マークGibaud

3
$ inは進むべき道
ブルースキン

1
$ orは集計演算子ではないと思います。
ポールシャピロ

@PaulShapiro:このため、反対票を投じなかったと思います。全体として、反対票を投じる前に理由をコメントすることを検討してください。これは、参照ブール集約演算子-> $ or
Amol M Kulkarni、

あなたの答えは正しくありません。ご覧のとおり、私はすでにどこでどのように答えが間違っているかを説明するコメントをしました。
ポールシャピロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.