mongoDB 小练习
1 创建数据库名为 grade
> use grade
switched to db grade 2 创建集合 class 3 插入若干数据 格式如下
{name:xxx,age:xxx,sex:xx,hobby:[xx,xx,xx]}
age : 7~14
hobby: draw, dance , running , sing, football , basketball, computer, python
> db.class.find() 4 查找
1.查看所有人信息
db.class.find() 2.查看年龄为 8 岁信息
db.class.find({age:8}) 3.查看年龄大于 10 岁信息
db.class.find({age:{$gt:10}}) 4.查看年龄 8-12 岁信息
db.class.find({age:{$in:[8,9,10,11,12]}}) 5.查看年龄 7岁 且 喜欢画画的 男生信息
db.class.find({age:7,hobby:"draw",sex:"b"}) 6.查看年龄 小于8岁 或者 大于12岁的学生
db.class.find({$or:[{age:{$lt:8}},{age:{$gt:12}}]}) 7.查看年龄 9岁 或者 11岁的学生
db.class.find({$or:[{age:12},{age:9}]}) 8.查找有两个兴趣的学生
db.class.find({hobby:{$size:2}}) 9.查找喜欢计算机的同学
db.class.find({hobby:"computer"}) 10.查找既喜欢画画又喜欢跳舞的
db.class.find({hobby:{$all:["draw","dance"]}})
db.class.find({hobby:"dance",hobby:"draw"}) 11.统计兴趣爱好有三项的人数
db.class.find({hobby:{$size:3}}) 12.找出班级中年龄第二大的同学
db.class.find().sort({"age":-1})[1] 13.查看本班兴趣爱好行涵盖范围
db.class.distinct("hobby") 14.找到班级中年龄最小的三位同学
db.class.find().sort({age:1}).limit(3)
练习第二阶段
使用之前的数据库
1. 将小红年龄改成8岁,兴趣爱好改成 跳舞画画
db.class.updateOne({name:"小红"},{$set:{age:8, hobby:["draw","dance"]}}) 2. 追加小明的兴趣爱好唱歌
db.class.updateOne({name:"小明"},{$push:{hobby:"sing"}}) 3.小王多了兴趣爱好吹牛,打篮球
db.class.updateOne({name:"小明"},{$pushAll:{hobby:["fox","basketball"]}}) 4.小李兴趣要增加跑步唱歌,但是不能是和已有的一样
db.class.updateOne({name:"小明"},{$addToSet:{hobby:{$each:["run","sing"]}}}) 5.班级所有年龄加一
db.class.updateMany({},{$inc:{age:1}}) 6.删除小明的sex属性
db.class.updateOne({},{$unset:{sex:""}}) 7.小李第一个兴趣爱好不要了
db.class.updateOne({name:"小李",{$pop:{hobby:-1}}}) 8.删除小红兴趣中的画画唱歌
db.class.updateOne({name:"小红",{$pullAll:{hobby:["draw","sing"]}}})
三阶段练习
使用 grade 数据库完成
1.删除所有年龄 小于8岁,或者 大于12岁 的学生
db.class.deleteMany({$or:[{age:{$lt:8}},{age:{$gt:12}}]})
2.给小红第二项爱好变为 跳舞
db.class.updateOne({name:"小红"},{$set:{"hobby.1":"dance"}})
3.删除兴趣爱好中没有 画画 的学生
db.class.deleteMany({},{hobby:{$nin:["draw"]}})
4.给小王增加一个域: 备注:{民族:"回族", 习俗:"不吃猪肉"}
db.class.updateOne({name:"小王"},{$set:{备注:{民族:"回族", 习俗:"不吃猪肉"}}})
5.修改小王的备注域, 增加项: 宗教:"伊斯兰教"
db.class.updateOne({name:"小王"},{$set:{"备注.宗教":"伊斯兰教"}})
四阶段练习
使用 grade 数据库完成
1. 将所有男生按照年龄升序排序结果不显示 _id
db.class.aggergate([{$match:{sex:"b"}},{$sort:{age:1}},{$project:{_id:0}}])
2. 统计班级是否有重名同学
db.class.aggergate({[$group:{_id:"$name",num:{$sum:1}}},{$match:{num:{$gt:1}}}])
mongoDB 小练习的更多相关文章
- 小程序 座位管理系统(二)(nodejs+mongodb+小程序)
图片从左至右:登录图.湘大新闻页.教学楼页. 说明: Node.js+mongodb.有些数据放在小程序里,有些数据放在mongodb里.和一相比布局稍作改动,密码改成了"111111&q ...
- 与你相遇好幸运,MongoDB小技巧
保存为bat方便: "C://Program Files//MongoDB//Server//3.2//bin//mongod.exe" --dbpath=D://corp//db ...
- yii 使用 mongodb 小工具 YiiMongoDbSuite
YiiMongoDbSuite下载链接: http://www.yiiframework.com/extension/yiimongodbsuite/ 如果你的yii和mongodb它已经建立了一个良 ...
- MongoDB小东西
在mongodb中,show users 和db.system.users.find() 都能查看账户的相关信息,但是这两个命令有什么区别么? db.system.users.find() 是查看全局 ...
- MongoDB资料汇总
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 它的特点是高性能.易部署.易使用,存储数据非常方便.主要功能特性有: 面向集合存 ...
- mongodb的安装与简单操作
MongoDB中文社区:http://www.mongoing.com 数据库的使用场景 SQL(关系型数据库):MySQL.SQLServer --->磁盘操作 1.高度事务性的场景 ...
- NodeJS实战:Express+Mongoose+ejs
元宵还没到,先向所有朋友拜一个晚年~~~ 文章目录: 1.组件版本号 -- --node -- --express -- --Mongoose 2.初始化项目 firstblood -- --用 ex ...
- < high performance web sites > 阅读小记
high performance web sites 1,减少HTTP请求数 (1)图片加载使用image maps 或者 CSS Sprite (2)使用非http协议,如(ftp:, file: ...
- Mongdb、Mysql、Redis、Memcache场景
个人的一点理解,不确定一定准确,有不对处欢迎指出 全部数据使用mysql存储,确保安全.准确和持久 大数据.非安全性数据使用Mongodb 小数据.结构丰富.持久化(主从数据)使用redis 小数据. ...
随机推荐
- 工作流引擎JFlow与activiti 对比分析(一)5种基本控制流模式的对比
为了更好的说明activiti 与jflow的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的.客观的对比. 首先activiti是国外的一款开源的工作流程引擎,在国际上影响比较深远与广泛 ...
- WebView断网提示
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/9913968.html 重写WebViewClient中的方法,然后WebView.setWebViewC ...
- PJSUA2开发文档--第六章 媒体 Media类
6. 媒体(Media) 媒体对象是能够产生媒体或接受媒体的对象. Media的重要子类是AudioMedia,它代表音频媒体.PJSUA2支持多种类型的音频媒体对象: 捕获设备的AudioMedia ...
- C# Math的说有函数 以及说明
Math.Abs(x) x绝对值 Math.Acos(x) ...
- Linux(Deepin 15.9) - MySQL5.7 安装
Linux(Deepin 15.9) - MySQL5.7 安装 sudo apt install mysql-server/panda sudo apt install mysql-client/p ...
- Netty初体验
package netty_starter; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFut ...
- qemu 系列
一.. qemu uboot 1. 首先安装交叉编译器,执行: sudo apt-get install gcc-arm-linux-gnueabi 2. 下载U-Boot源文件: ht ...
- ksar、sar及相关内核知识点解析
关键词:sar.sadc.ksar./proc/stat./proc/cpuinfo./proc/meminfo./proc/diskstats. 在之前有简单介绍过sar/ksar,最近在使用中感觉 ...
- Java面试准备之多线程
什么叫线程安全?举例说明 多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程 ...
- 基于C#的钉钉SDK开发(1)--对官方SDK的重构优化
在前段时间,接触一个很喜欢钉钉并且已在内部场景广泛使用钉钉进行工厂内部管理的客户,如钉钉考勤.日常审批.钉钉投影.钉钉门禁等等方面,才体会到原来钉钉已经已经在企业上可以用的很广泛的,因此回过头来学习研 ...