MongoDB数据操作练习
1、创建一年级的3个班,并随机添加 10 名学生;
>for(grade_index in (grade = ['grade_1_1', 'grade_1_2', 'grade_1_3'])) {
       hobbys=['draw', 'dance', 'running', 'sing', 'football', 'basketball', 'computer', 'python']
       for (var i = 1; i <= 10; i++) {
           db[grade[grade_index]].insert({
               "name": "zhangsan" + i,
               "sex": Math.round(Math.random() * 10) % 2,
               "age": Math.round(Math.random() * 6) + 3,
               "hobby": [Hobbys[Math.round(Math.random() * 6)]]
           });
       }
   } 
查看
查看一年级二班grade_1_2中的所有学生
db.getCollection('grade_1_2').find({})
查看一年级二班grade_1_2中所有年龄是 4 岁的学生
db.getCollection('grade_1_2').find({"age": 4})
查看一年级二班grade_1_2中所有年龄大于 4 岁的学生
db.getCollection('grade_1_2').find({"age": {$gt: 4}})
查看一年级二班grade_1_2中所有年龄大于 4 岁并且小于 7 岁的学生
db.getCollection('grade_1_2').find({"age": {$gt: 4, $lt: 7}})
查看一年级二班grade_1_2中所有年龄大于 4 岁并且性别值为0的学生
db.getCollection('grade_1_2').find({"age": {$gt: 4}, "sex": 0})
查看一年级二班grade_1_2中所有年龄小于 4 岁或者大于 7 岁的学生
db.getCollection('grade_1_2').find({$or: [{"age": {$lt: 4}}, {"age": {$gt: 6}}]})
查看一年级二班grade_1_2中所有年龄是 4 岁或 6 岁的学生
db.getCollection('grade_1_2').find({"age": {$in: [4, 6]}})
查看一年级二班grade_1_2中所有姓名带zhangsan1的学生
db.getCollection('grade_1_2').find({"name": {$regex: "zhangsan1"}})
查看一年级二班grade_1_2中所有姓名带zhangsan1和zhangsan2的学生
db.getCollection('grade_1_2').find({"name": {$in: [new RegExp(""zhangsan1"), new RegExp(""zhangsan2")]}}) 
查看一年级二班grade_1_2中所有兴趣爱好有三项的学生
db.getCollection('grade_1_2').find({"hobby": {$size: 3}}) 
查看一年级二班`grade_1_2`中所有兴趣爱好包括画画的学生
db.getCollection('grade_1_2').find({"hobby": "drawing"})
查看一年级二班`grade_1_2`中所有兴趣爱好既包括画画又包括跳舞的学生
db.getCollection('grade_1_2').find({"hobby": {$all: ["drawing", "dance"]}}) 
查看一年级二班grade_1_2中所有兴趣爱好有三项的学生的学生数目
db.getCollection('grade_1_2').find({"hobby": {$size: 3}}).count() 
查看一年级二班的第二位学生
db.getCollection('grade_1_2').find({}).limit(1).skip(1) 
查看一年级二班的学生,按年纪升序
db.getCollection('grade_1_2').find({}).sort({"age": 1}) 
查看一年级二班的学生,按年纪降序
db.getCollection('grade_1_2').find({}).sort({"age": -1}) 
查看一年级二班的学生,年龄值有哪些
db.getCollection('grade_1_2').distinct('age')  
查看一年级二班的学生,兴趣覆盖范围有哪些
db.getCollection('grade_1_2').distinct('hobby')  
查看一年级二班的学生,男生(`sex`为 0)年龄值有哪些
db.getCollection('grade_1_2').distinct('age', {"sex": 0})
删除
一年级二班grade_1_2, 删除所有 4 岁的学生
db.getCollection('grade_1_2').remove({"age": 4})  
一年级二班grade_1_2, 删除第一位 6 岁的学生
db.getCollection('grade_1_2').remove({"age": 6}, {justOne: 1})  
修改
一年级二班grade_1_2中,修改名为zhangsan7的学生,年龄为 8 岁,兴趣爱好为 跳舞和画画;
db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$set: {"age": 8, "hobby": ["dance", "drawing"]}}) 
一年级二班`grade_1_2`中,追加zhangsan7`学生兴趣爱好唱歌;
db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$push: {"hobby": "sing"}}) 
一年级二班`grade_1_2`中,追加zhangsan7`学生兴趣爱好吹牛和打篮球;
db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$push: {"hobby": {$each: ["brag", "play_basketball"]}}}) 
一年级二班`grade_1_2`中,追加`zhangsan7`学生兴趣爱好唱歌和打篮球,要保证`hobby`数组不重复;
db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$addToSet: {"hobby": {$each: ["sing1", "play_basketball"]}}})  
新学年,给一年级二班所有学生的年龄都增加一岁
db.getCollection('grade_1_2').update({}, {$inc: {"age": 1}}, {multi: true})  
一年级二班grade_1_2中,删除zhangsan7学生的sex属性
db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$unset: {"sex": 1}}) 
一年级二班grade_1_2中,删除zhangsan7学生的hobby数组中的头元素
db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$pop: {"hobby": -1}})  
一年级二班`grade_1_2`中,删除`zhangsan7`学生的`hobby`数组中的尾元素
db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$pop: {"hobby": 1}})  
一年级二班`grade_1_2`中,删除`zhangsan7`学生的`hobby`数组中的`sing`元素
db.getCollection('grade_1_2').update({"name": "zhangsan7"}, {$pull: {"hobby": "sing"}}  
分组
新建一个集合grade_1_4,记录一年级四班在期中考试时的成绩;
 for (var i = 1; i <= 10; i++) {
        db.grade_1_4.insert({
            "name": "zhangsan" + i,
            "sex": Math.round(Math.random() * 10) % 2,
            "age": Math.round(Math.random() * 6) + 3,
            "score": {
                "chinese": 60 + Math.round(Math.random() * 40),
                "math": 60 + Math.round(Math.random() * 40),
                "english": 60 + Math.round(Math.random() * 40)
            }
        });
    }  
统计每名学生在考试中的总分
 db.grade_1_4.group({
       key: {"name": 1},
       cond: {},
       reduce: function(curr, result) {
result.total += curr.score.chinese + curr.score.math + curr.score.english;
       },
       initial: { total : 0 }
   })
统计每名男生在考试中的总分
  db.grade_1_4.group({
       key: {"name": 1},
       cond: {"sex": 0},
       reduce: function(curr, result) {
result.total += curr.score.chinese + curr.score.math + curr.score.english;
       },
       initial: { total : 0 }
   })  
统计每名男生在考试中的总分及平均分
 db.grade_1_4.group({
       key: {"name": 1},
       cond: {"sex": 0},
       reduce: function(curr, result) {
result.total += curr.score.chinese + curr.score.math + curr.score.english;
       },
       initial: { total : 0 },
       finalize: function(item) {
item.avg = (item.total / 3).toFixed(2);
return item;
       }
   })  
聚合
根据姓名分组, 并统计人数
db.getCollection('grade_1_4').aggregate([{$group: {_id: "$name", num: {$sum: 1}}}])  
根据姓名分组, 并统计人数,过滤人数大于 1 的学生
 db.getCollection('grade_1_4').aggregate([
       {$group: {_id: "$name", num: {$sum: 1}}},
       {$match: {num: {$gt: 1}}}
   ])
统计每名学生在考试中的总分
   db.getCollection('grade_1_4').aggregate([
       {$group: {_id: "$name", score: {$sum: {$sum: ["$score.chinese", "$score.math", "$score.english"]}}}}
])
统计每名男生在考试中的总分
db.getCollection('grade_1_4').aggregate([
   {$match: {sex: 0}},
   {$group: {_id: "$name", score: {$sum: {$sum: ["$score.chinese", "$score.math", "$score.english"]}}}}
])
统计每名男生在考试中的总分, 总分降序
db.getCollection('grade_1_4').aggregate([
       {$match: {sex: 0}},
       {$group: {_id: "$name", score: {$sum: {$sum: ["$score.chinese", "$score.math", "$score.english"]}}}},
       {$sort: {score: 1}}
])
MongoDB数据操作练习的更多相关文章
- 笔记-mongodb数据操作
		笔记-mongodb数据操作 1. 数据操作 1.1. 插入 db.COLLECTION_NAME.insert(document) 案例: db.inventory.insertOn ... 
- EasyUI-datagrid数据展示+MongoDB数据操作
		使用EasyUI-datagrid进行数据展示:进行添加,修改,删除操作逻辑代码,数据源来自MongoDB. 一.新建SiteInfo控制器,添加Index页面:http://www.cnblogs. ... 
- mongodb 数据操作CRUD
		链接到mongo 新建超级用户 上文中我们提到mongo用户库表管理.为了方便我们先新建一个root权限的用户. db.createUser({user:'dbadmin',pwd:'123456', ... 
- mongodb数据操作(CRUD)
		1.数据插入db.集合名.insert() 操作 > use hk switched to db hk > show collections > db.info.insert({&q ... 
- MongoDB数据操作之删除与游标处理
		删除数据(比较常用) 范例:清空infos集合中的内容.表.文档.成员. db.infos.remove({"url":/-/}); 默认情况下都删除,第二个条件设为true,只删 ... 
- Mongodb数据操作基础
		var mongodb = require('mongodb'); var server = new mongodb.Server('localhost', 27017, {auto_reconnec ... 
- mongodb 数据操作(1)
		切换/创建数据库 use test 添加数据db.student.save({name:"J33ack",age:25}) 查看数据库show dbs 删除当前数据库 db.dro ... 
- mongodb 数据操作(2)
		查询 db.student.find({}) 查询db.student.find({name:"李强1"}) 查询 条件查询 db.student.find({sex:&quo ... 
- MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据
		看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ... 
随机推荐
- 1 datax 安装和简单使用
			DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableStore(O ... 
- Django-查询优化
			表数据: from django.db import models class Province(models.Model): name = models.CharField(max_length=1 ... 
- nginx报错111: Connection refused
			最近遇到了nginx疯狂抛错,access.log一天一共5W多条,但error.log中有大概9K多条,基本都是111: Connection refused,这到底是为什么呢? 从日志看起 我们还 ... 
- Redis-1-简介与安装
			目录 1.Redis 简介 2.安装Redis 1.安装gcc redis是c语言编写的 2.下载redis安装包,在root目录下执行 3.解压redis安装包 4.进入redis目录 5.编译安装 ... 
- Blend 阴影 倒影 模糊效果
			原文:Blend 阴影 倒影 模糊效果 1)阴影 和模糊效果很简单 在Blend的面板效果中就有体现 直接拖拽到控件即可 2)文本加圆角 需要一个布局控件Border 设置属性CornerRadius ... 
- 让您的WinForm控件快速支持拖拽文件
			实现原理:使用扩展方法. /// <summary> /// 控件扩展 /// </summary> public static class ControlExt { /// ... 
- 【JZOJ】2126. 最大约数和
			题目大意 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. 分析 把我们分解出来的因数进行合并,存在一个不知名的数组里,然后我们大可开始我们的迪屁!!(bag),我们可以 ... 
- day 48
			目录 js BOM(浏览器对象模型) window对象 window子对象 弹出框 计时事件 DOM(文档对象模型) 查找标签 节点操作 事件 常用事件 绑定方式 jQuery jQuery介绍 jQ ... 
- 记录下vue 中引用echarts 出现 "TypeError: Cannot read property 'getAttribute' of undefined"问题
			今天做项目,用echarts展示数据 ,自己测试 先测试 了下.写的代码html: <div ref="myChart" style="height:300px;w ... 
- vue自带开发环境,生产环境,自己搭建测试环境
			git 码云地址: https://gitee.com/qichangshui_admin/vueAddTest 参考地址: https://www.jianshu.com/p/bfcfe5fc253 ... 
