120

$match で OR を実行することは可能ですか?

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

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

2 に答える 2

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

そのように、演算子は通常関数$matchに入れるものを受け取るだけなのでfind()

于 2013-06-03T18:40:33.320 に答える
100

同じフィールド$orを-ingしているこの特定のケースでは、読みやすさも向上するため、演算子を選択することをお勧めします。$in

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

MongoDB docs によると、$inこの場合は次の使用が推奨されます。

$or 対 $in

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

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

于 2013-06-06T11:48:32.420 に答える