我在產品集合中有以下文檔。使用elemMatch從MongoDB中的數組獲取數據
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} } } )
我無法弄清楚這種意外的行爲。