0

私は現在Mongoの使い方を学んでおり、構文の理由について疑問に思っていました。

俳優のデータベースで、英語でもあるすべての男性俳優を検索するには、クエリは次のとおりです。

db.actors.find({gender: 'm', $or: [{nationality: 'english'}]});

私の素朴さを許してください。しかし、次のように「and」を使用する方が理にかなっていないのはなぜですか?

db.actors.find({gender: 'm', $and: [{nationality: 'english'}]});

これには、私が行方不明になっている(または本当に悪い日を過ごしている)という理由があるに違いありません。それは何ですか?

4

2 に答える 2

2

and/or を間違った場所に置きます。

(男性 OR 英語)ではなく 、(男性 AND (英語 OR 他のオプションなし)) です。

$or を使用する必要があるのは、その 2 番目のリストに複数の条件がある場合のみです。

クエリは次のように簡単に記述できます。

  { gender: 'M', nationality: 'English' }

すべての最上位条件の間には常に暗黙の AND があります。

于 2013-09-03T00:02:27.227 に答える
0

$andand$orは中置演算子ではありません。それらは引数の配列を取ります。あなたの場合、単一要素の配列を渡しているため、2 つのクエリは同等です: ( x OR y ) は ( x AND y ) とは異なりますが、要素が 1 つしかない場合、xは同じですx理論的に「OR」か「AND」か。

私はあなたが望むと思います:

db.actors.find({gender: 'm', nationality: 'english'});
于 2013-09-03T00:03:42.310 に答える