# 新手在网上直接搜索列表有相同key没有搜出理想结果,但是搜elemMatch用法出了结果,特此记录下,勿喷
如图,scores里面有相同的key,即score和type
如果用 . 的方式查询会查询不准甚至失误(只截取了一个结果)
但是用elemMatch就可以精确查询(只截取了一个结果)
db.student.find({ "scores" : { $elemMatch : { "type" : "homework" , "score" : { $gt : 60 , $lt : 70 } } } })
并且可以用管道多次限定不同科目的成绩(只截取了一个结果)
db.student.aggregate([ { $match : { "scores" : { $elemMatch : { "type" : "homework" , "score" : { $gt : 60 , $lt : 70 } } } } },
{ $match : { "scores" : { $elemMatch : { "type" : "quiz" , "score" : { $gt : 70 , $lt : 90 } } } } } ])