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数据操作练习的更多相关文章

  1. 笔记-mongodb数据操作

    笔记-mongodb数据操作 1.      数据操作 1.1.    插入 db.COLLECTION_NAME.insert(document) 案例: db.inventory.insertOn ...

  2. EasyUI-datagrid数据展示+MongoDB数据操作

    使用EasyUI-datagrid进行数据展示:进行添加,修改,删除操作逻辑代码,数据源来自MongoDB. 一.新建SiteInfo控制器,添加Index页面:http://www.cnblogs. ...

  3. mongodb 数据操作CRUD

    链接到mongo 新建超级用户 上文中我们提到mongo用户库表管理.为了方便我们先新建一个root权限的用户. db.createUser({user:'dbadmin',pwd:'123456', ...

  4. mongodb数据操作(CRUD)

    1.数据插入db.集合名.insert() 操作 > use hk switched to db hk > show collections > db.info.insert({&q ...

  5. MongoDB数据操作之删除与游标处理

    删除数据(比较常用) 范例:清空infos集合中的内容.表.文档.成员. db.infos.remove({"url":/-/}); 默认情况下都删除,第二个条件设为true,只删 ...

  6. Mongodb数据操作基础

    var mongodb = require('mongodb'); var server = new mongodb.Server('localhost', 27017, {auto_reconnec ...

  7. mongodb 数据操作(1)

    切换/创建数据库 use test 添加数据db.student.save({name:"J33ack",age:25}) 查看数据库show dbs 删除当前数据库 db.dro ...

  8. mongodb 数据操作(2)

    查询 db.student.find({}) 查询db.student.find({name:"李强1"}) 查询   条件查询 db.student.find({sex:&quo ...

  9. MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

随机推荐

  1. R语言学习基础一

    笔者使用Rstudio编写R程序,本文主要总结在编写过程中遇到的一些实际 问题 与学习配套的的code上传到我的github,网址: https://github.com/LIU-HONGYANG/S ...

  2. javascirpt的json.stringify()方法在IE浏览器兼容性模式下出错的原因与解决办法

    今天开机混底薪的时候遇到一个JSON.stringify()在IE浏览器兼容模式下的问题. 问题描述 一个弹窗选择的功能原来好好的,突然就不行了. 想要调试调试不了,报错信息也看不到(一开F12这破I ...

  3. Java SPI机制:ServiceLoader实现原理及应用剖析

    一.背景 SPI,全称Service Provider Interfaces,服务提供接口.是Java提供的一套供第三方实现或扩展使用的技术体系.主要通过解耦服务具体实现以及服务使用,使得程序的可扩展 ...

  4. 我自己整理的 Linux 常用命令

    1.查看文件安装路径: 由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址). 这里以 xsp 为例.比如说我安装了xsp,但是不知道文件都安装在哪些地方.放在哪些文件夹里,可以用下 ...

  5. 想让自己的项目6666,可是 Chrome 不答应!

    读万卷书,行万里路!有的技能可以从书里学会,有的技能却需要在实战中打怪升级慢慢掌握,今天就来和大家聊一个很多小伙伴经常遇到的问题. 缘起 有人向松哥反映,在搭建微服务分布式配置中心 Spring Cl ...

  6. 【转】常用PLC通讯协议

    三菱FX系列PLC通讯测试 发送帧(Hex): 起始(STX) 02 命令(CMD) 30 首地址(ADDRESS) 30 30 41 30 字节数(BYTES) 30 31 终止(ETX) 03 校 ...

  7. RabbitMQ消息中间件的用法

    1.什么是RabbitMQ RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消 ...

  8. 【linux】linux磁盘空间 目录查看清理 和 文件查看清理

    =========================大目录排查============================= 一.首先查看磁盘挂载,磁盘空间使用情况 1.进入根路径 cd / 2.查看磁盘挂 ...

  9. jquery动画控制非css属性

    JQuery的animate()方法可以通过渐变的更改CSS属性来实现简单的动画效果, 比如 $("#box").animate({height:"300px" ...

  10. [转]ASP.NET Core Web API 最佳实践指南

    原文地址: ASP.NET-Core-Web-API-Best-Practices-Guide 转自 介绍# 当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求. 但 ...