製品コレクションには次のドキュメントがあります。MongoDBの配列からelemMatchを使用してデータを取得します
db.product.find()
{ "_id" : 1, "results" : [ { "product" : "abc", "score" : 10 }, { "product" : "xyz", "score" : 5 } ] }
{ "_id" : 2, "results" : [ { "product" : "abc", "score" : 8 }, { "product" : "xyz", "score" : 7 } ] }
{ "_id" : 3, "results" : [ { "product" : "abc", "score" : 7 }, { "product" : "xyz", "score" : 8 } ] }
次のクエリは、結果をelemMatchで期待どおりに返します。
> db.product.find( { results : { $elemMatch : { product : "xyz" , score : { $eq : 5} } } } )
{ "_id" : 1, "results" : [ { "product" : "abc", "score" : 10 }, { "product" : "xyz", "score" : 5 } ] }
同様に、これも期待される結果を返します。
> db.product.find( { results : { product : "xyz" , score : 5 } } )
{ "_id" : 1, "results" : [ { "product" : "abc", "score" : 10 }, { "product" : "xyz", "score" : 5 } ] }
しかし、比較演算子を配列内で使用すると、結果が得られません。
db.product.find( { results : { product : "xyz" , score : { $eq : 5} } } )
私はこの予期しない動作を把握することができません。