千家信息网

MongoDB中的常用语句总结大全

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,前言MongoDB与MySQL基本语句还是有很大区别的,今天再介绍一下MongoDB的一些常用的基本语句,下面话不多说了,来一起看看详细的介绍吧MOngoDB 删除语句delete()删除删除一个集合
千家信息网最后更新 2026年11月02日MongoDB中的常用语句总结大全

前言

MongoDB与MySQL基本语句还是有很大区别的,今天再介绍一下MongoDB的一些常用的基本语句,下面话不多说了,来一起看看详细的介绍吧

MOngoDB 删除语句

delete()删除

删除一个集合

db.collection.deleteOne()

删除多个集合

db.collection.deletMany();

remove()删除

删除所有的name:李四的数据

db.student.remove({name:"李四"});

只删除一条sex:男的数据 仅删除一条

db.student.remove({sex:"男"},true);

删除全部

db.student.remove({});

数据库假删除

有时候用户删除操作的时候,需求是这样的,仅是隐藏这条数据,并不是真的从数据库中删除。

这时候就用到假删除了,比如这个是张三发的两篇微博:

db.student.insert([ {name:"张三",content:"今天心情好",isDel:0}, {name:"张三",content:"今天心情一般",isDel:0},]);

用户增加两条数据,但只保留后一条,删除前一条,这时候用到假删除 ,在添加数据时加上一个字段isDel:0

所以当用户删除数据时候 执行的不是remove方法而是update方法

db.student.update({"_id" : ObjectId("5bd6a46f1eb7a22fa07cb382")},{ $set:{ isDel:1 }});

当isDel:0是表示用户没有删除 为1是表示用户已经删除

所以在查询的时候要筛选name和isDel条件即可

db.student.find({name:"张三",isDel:0});

查询到用户没有删除的数据:

然后就可以实现假删除了。

批量数据的操作和修改

向集合中插入10000个文档

var arr= [];for(var i=0;i<10000;i++){ arr.push({counter:i});}db.demos.insert(arr);db.demos.find();

查询demos中counter为666的文档

db.demos.find({counter:666});

查询demos中counter小于66的文档

db.demos.find({counter:{$lt:666}});

查询demos中counter大T666的文档

db.demos.find({counter:{$gt:666}});

查询demos中counter大于66小于666的文档1120查吉demos集合中的前10余数据

db.demos.find({counter:{$gt:66, $lt:666}});

查石demos集合中的第1字到20条数据

db.demos.find().limit(10);

查春demos集合中的第2 1条到30条数据 分页功能 skip从多少条开始 limit每次查询多少条

db.demos.find().skip(0).limit(10);//第一页 从0条开始 每查询10条db.demos.find().skip(10).limit(10);//第二页 从10条开始 每查询10条db.demos.find().skip(20).limit(10);//第三页 从20条开始 每查询10条

集合中文档关系

  • 一对一(one to one):比如:人和身份证 老公和老婆
  • 一对多(one to many):比如:父母和孩子 用户和物品
  • 多对多(many to many):比如:老师和学生

一对一

以内嵌文档的形式体现,

//一对一db.aAndb.insert([ {name:"杨过",wife:{name:"小龙女",sex:"女"},sex:"男"}, {name:"杨过",wife:{name:"小龙女",sex:"女"},sex:"男"}])db.aAndb.find();

一对多

通过内嵌文档的形式实现或者通过集合的形式实现

//一对多 比如 微博 和 微博评论//添加微博db.weibo.insert([{weibo:"世界这么大,我想去看看"},{weibo:"我要做一名web开发者!!!"}])db.weibo.find();

添加评论

db.comments.insert([{weibo_id: ObjectId("5bdd89e06a5e78f4cfc2b9c8"),list:[ "那你有钱吗", "一个人吗??去呢啊??", "加油!!"]},{weibo_id: ObjectId("5bdd89e06a5e78f4cfc2b9c9"),list:[ "那你要学习HTML", "那还要你要学习css", "加油!!"]}]);db.comments.find();

查询一对多

var weibo_id= db.weibo.findOne({"weibo" : "世界这么大,我想去看看"})._id;db.comments.find({weibo_id: weibo_id});

多对多的关系

比如:学生和老师

可以通过多文档关联,

//多对多 老师《------》学生//插入老师集合db.teachers.insert([{ name:"语文老师", teacher_id: 1, student_id:[ 1001, 1002, 1003 ] },{ name:"数学老师", teacher_id: 2, student_id:[ 1001, 1002, 1003 ] },{ name:"英语老师", teacher_id: 3, student_id:[ 1001, 1002, 1003 ] }])db.teachers.find();//插入学生集合db.students.insert([{ name:"小明", student_id: 1001, teacher_id:[ 1, 2, 3 ] },{ name:"小红", student_id: 1002, teacher_id:[ 1, 2, 3 ] },{ name:"小刚", student_id: 1003, teacher_id:[ 1, 2, 3 ] }])db.students.find();db.teachers.find();

排序和索引

排序:

查询文档时,默认是按照_id的值进行排序的(升序)

sort() 可以用来指定文档的排序规则,sort() 内部需要传递一个对象来指定文档的排序规则 ,其中1表示升序 ,-1表示降序
limit skip sort 的顺序可以任意改变 ,运行时会自动调整。

不希望它默认按照id排序 希望它按照工资来排序

//按照工资升序排列db.section.find().sort({wages:1});//优先按照工资升序排列 如果遇到相同的就在 按照id升序排列db.section.find().sort({wages: 1},{_id: -1});

索引:

展示字段中 部分内容

或者是提取这个字段内的部分内容

在查询时 ,可以在第二个参数来设置查询的结果投影

索引: find({ 查询条件 }, { 检索范围(1显示 0隐藏)})
注意: _id如果不设置默认是1(显示) 可手动隐藏

db.section.find({}, {name: 1});//只显示name和wages字段`db.section.find({}, {name: 1, _id: 0, wages: 1});`

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

查询 数据 文档 用户 老师 排序 升序 内容 字段 学生 张三 学习 语句 一对一 工资 形式 时候 索引 世界 小龙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 百单网互联网科技有限公司 广州为想互联网科技有限公司 腾讯阿里互联网科技 中资互联网科技 互联网 科技 互联网金融 科技 湖南洣水互联网科技有限公司扣款 中国的互联网科技企业的崛起 以后互联网后是啥科技 和信科技工业互联网 哈尔滨屹滨互联网科技有限公司 开一家科技互联网公司需要多少钱 互联网科技扶贫时间 互联网新科技动漫ppt素材 雨阳互联网卡科技有限公司 互联网科技融合创新 上海万顺科技互联网有限公司招聘 杭州科技互联网公司有哪些 优雇互联网科技有限公司 山东特亿宝互联网科技有限公司 人人互联网科技是培训 广州优美互联网科技 宝灵互联网科技有限公司 黑科技 体验场景 互联网大会 南通创西澳互联网科技有限公司 山东大美朱楼互联网科技有限公司 杭州科技互联网公司有哪些 科技互联网企业在行动 颐高云石互联网科技
0