news 2026/9/4 6:30:35

头歌实践教学平台:大数据存储2023(十九3)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
头歌实践教学平台:大数据存储2023(十九3)

十九、MongoDB 文档的高级查询操作

第3关:高级查询(二)

任务描述
本关任务:根据编程要求完成文档查询。

相关知识
为了完成本关任务,你需要掌握:各种查询操作符的用法。

假设数据库有集合 student 如下:

_id name age sex major
1 王晓丽 19 女 计算机
2 张明 21 男 计算机
3 秋雅 20 女 播音主持
4 张欣欣 18 女 表演


$or 条件之间的或查询
$or 表示多个查询条件之间是或的关系,比如查询性别 sex 为 男 或年龄 age 为18的文档信息:

db.student.find({$or:[{sex:"男"},{age:18}]})
查询结果,如图1所示:

图 1


$and 条件之间的且查询
$and表示多个查询条件之间是且的关系,比如查询年龄 age 大于18且小于21(18 < age < 21)的信息:

db.student.find({$and:[{age:{$gt:18}},{age:{$lt:21}}]})
查询结果,如图2所示:

图 2


$not 条件取反查询
$not 用来执行取反操作,比如查询年龄 age 大于等于20岁,然后进行取反(即查询年龄小于20岁的文档):

db.student.find({age:{$not:{$gte:20}}})
查询结果,如图3所示:

图 3


正则表达式匹配查询
查询不符合major=计*开头文档:

db.student.find({major:{$not:/^计.*/}})
查询结果,如图4所示:

图 4


count() 返回结果集总数
比如返回上一步正则查询到的结果集有几条:

db.student.find({major:{$not:/^计.*/}}).count()
查询结果,如图5所示:

图 5


编程要求
现有 person.json 文件内容如下:

_id name age sex hobbies
1 杨璐 19 女 唱歌,跳舞
2 李建学 20 男 唱歌,篮球
…… …… …… …… ……
在右侧命令行进行操作:

将 /home/example/person.json 文件导入到数据库 mydb3 中的 test 集合中。
在右侧代码行 Begin-End 中编辑,如下:

执行查询命令,查找年龄为20岁男生的信息,并按照_id升序排序;

执行查询命令,查找年龄为20岁或者性别为男生的信息,并按照_id升序排序;

执行查询命令,查找name = 韩*开头的人的信息,并按照_id升序排序;

执行查询命令,查找年龄19 =< age < 22的人的信息,并按照_id升序排序;

执行查询命令,查找年龄age < 19或age >21的信息,并按照_id升序排序;

执行查询命令,查找name != 韩*开头的人的信息,并按照_id升序排序;

执行查询命令,查找查找name != 韩*开头的人的个数;

执行查询命令,查找年龄19 =< age < 22的人的个数。

注意:上述操作共有八条命令,每条命令以;号隔开(由于测试需要,请在$前加`(转义符),即使用\$,平时在命令窗口练习不需要加`;不要使用双引号改用 单引号)。

测试说明
操作完之后点击评测,我会对你的操作进行测试,如果操作正确,我会输出如 测试集1所示的结果。

开始你的任务吧,祝你成功!

## 代码行部分
#********* Begin *********#
echo "
db.test.find({\$and:[{age:20}, {sex:'男'}]}).sort({_id:1});
db.test.find({\$or:[{age:20}, {sex:'男'}]}).sort({_id:1});
db.test.find({name:/^韩.*/}).sort({_id:1});
db.test.find({\$and:[{age:{\$gte:19}}, {age:{\$lt:22}}]}).sort({_id:1});
db.test.find({\$or:[{age:{\$lt:19}}, {age:{\$gt:21}}]}).sort({_id:1});
db.test.find({name:{\$not:/^韩.*/}}).sort({_id:1});
db.test.find({name:{\$not:/^韩.*/}}).count();
db.test.find({\$and:[{age:{\$gte:19}}, {age:{\$lt:22}}]}).count();
"
#********* End *********#

有任何问题都可以随时关注私信!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 6:29:27

Android旅游记录APP开发全解析:从轨迹定位到数据同步的实战指南

简介&#xff1a;这是一套完整的Android旅游路线记录与分享APP毕业设计源码&#xff0c;面向Android开发初学者、课程设计及本科毕业设计学生&#xff0c;解决旅行轨迹规划、多模态行程记录与社交化内容分享三大核心需求。资源包共432个文件&#xff0c;含150个Java业务逻辑与A…

作者头像 李华
网站建设 2026/9/4 6:27:36

AI工程实践中的“无摩擦地狱”:如何用分层防护避免失控?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 6:26:07

0 开始构建研发高效能全栈式团队

阅读本文你将收获&#xff1a;1、为什么以全栈为方向提升研发效能&#xff1f;2、为啥要建立轻量级团队框架3、技术栈的决策要点4、研发团队的关键效能指标5、一些延伸思考一开始, 我们把 Dell EMC 的高级主管软件工程师, 也就是架构师管俊老师给邀请过来了, 让他跟我们一块儿分…

作者头像 李华
网站建设 2026/9/4 6:25:10

从逆向工程到现代重构:用JavaScript Canvas复刻复古画图软件

简介&#xff1a;这是一款轻量级Windows平台简易绘图工具源码包&#xff0c;面向编程初学者、C GUI开发入门者及需要快速实现基础图像编辑功能的开发者。资源复刻经典Paint画图逻辑&#xff0c;提供画笔、橡皮擦、填充、几何图形绘制等核心功能&#xff0c;适用于教学演示、课程…

作者头像 李华
网站建设 2026/9/4 6:23:20

akf-trust-metadata - SKILL

name: akf-trust-metadata description: “The AI native file format. EXIF for AI — stamps every file with trust scores, source provenance, and compliance metadata. Embeds into 20 formats (DOCX, PDF, images, code). EU AI Act, SOX, HIPAA auditing.” risk: saf…

作者头像 李华
网站建设 2026/9/4 6:21:53

当AI学会自主“黑客”:OpenAI紧急急刹车,大模型安全告急

最新内容 微 信 搜索 网 络 研 究 观在人工智能&#xff08;AI&#xff09;迅猛发展的浪潮中&#xff0c;我们习惯了听到“更快、更强、更聪明”的捷报。然而&#xff0c;2026年8月中旬&#xff0c;全球AI领头羊OpenAI却做出了一个令整个科技界震动的决定&#xff1a;主动按下了…

作者头像 李华