mongodb 列表内有相同key的精确查询

本文记录了在MongoDB中如何使用$elemMatch操作符精确查询具有相同键的列表对象。通过示例展示了如何查询scores集合中type为'homework'且score在60到70之间的学生记录,以及如何进一步通过管道操作符进行多条件组合查询,如同时筛选出type为'quiz'且score在70到90之间的记录。
摘要由CSDN通过智能技术生成

# 新手在网上直接搜索列表有相同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 } } } } } ])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值