2017-11-16 10 views
0

イムとクエリの違い、と私は2つのクエリがあります: 延期:mongobd上の新しいグループ分け

db.movies.aggregate([ 
    { "$match": { 
     $and : [ 
     { "imdb.rating": { $lt: 7 }}, 
     {$and: [ {"genres": { "$ne": "Crime" } }, {"genres": { "$ne": "Horror" } }]}, 
     {$and: [ {"languages": { "$eq": "English" } }, {"languages": { "$eq": "Japanese" } }]}, 
     {$or: [ {"rated": { "$eq": "PG" } }, {"rated": { "$eq": "G" } }]} 

     ] 

       } 
    } 
]).itcount() 

結果その:23本と

そして今:

db.movies.aggregate([ 
    { "$match": { 
     "imdb.rating": { $lt: 7 }, 
     $and: [ {"genres": { "$ne": "Crime" } }, {"genres": { "$ne": "Horror" } }], 
     $or: [ {"rated": { "$eq": "PG" } }, {"rated": { "$eq": "G" } }], 
     $and: [ {"languages": { "$eq": "English" } }, {"languages": { "$eq": "Japanese" } }] 

       } 
    } 
]).itcount() 

を結果は、その25、

しかし、今私は2つのクエリの違いは何かを理解することはできませんこれで助けてください?

答えて

1

機能的な違いはありません。 $matchは、複数の式と単純なキーを指定する場合、暗黙的に$andを使用しています。値式はkey: {$eq: value}の省略形です。

$match: {a:3, b:"buzz"} 

はの省略形です:

$match: {$and: [{a:{$eq:3}}, {b:{$eq:"buzz"}} ] } 
+0

、なぜ結果が、それはまったく同じですか? –

+0

Whoa;私は誤解しましたか?私は2番目のバージョンのALSOが23を返すと思っていました。 OK。ムービーコレクションから1つまたは2つのサンプルドキュメントを投稿できますか?とりわけ、$と英語の$ eq英語と日本語は決して真実ではありません。 –