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虽然概念新颖,但是 ...
随机推荐
- 算法(贪心|BF|KMP)
贪心算法 前置知识 const Greedy = num => { //贪心 let arr = [100, 20, 10, 5, 2, 1] let count = 0; for (let i ...
- Pandas操作excel
读取excel:Pandas库read_excel()参数详解 pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_co ...
- 『kamp 树形dp』
kamp Description jz 市的云台山是个很美丽的景区,小 x 暑期到云台山打工,他的任务是开景区的大巴. 云台山景区有 N 个景点,这 N 个景点由 N-1 条道路连接而成,我们保证这 ...
- [转] Nginx配置中的location、root、alias
Nginx配置中的location.root.alias location & root 初始配置 [root@adailinux vhost]# cat rio.conf server { ...
- CocosCreator 2.1.2 Shader组件
本篇文章相关导读: 新版ShaderHelper,支持 Creator 2.1.2 ! 社区大佬揭开 Creator 2.1.2 材质系统的神秘面纱! 为什么要选择使用TypeScript,看了就知道 ...
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 3: invalid start byte错误解决办法
这类错误的原因是编码造成的,通常情况下都是utf-8编码,这需要变换一下,改成encoding="ISO-8859-1"即可: file = pd.read_csv("/ ...
- [Silverlight 4] 參數的傳遞方法
Silverlight都會有一個專案叫 *.Web,有個ManagePage.aspx裝戴Silverlight元件,也是應用程式的入口 然後還會有一個專案(此處叫ManageBack),會編譯成Si ...
- 基于Jquery的进度条插件(实用)
Spin.js 最喜欢这款插件了,动画图片的长度.粗细.速度和角度都可以灵活控制,想要做成什么样都可以. 源码下载 在线演示 Percentage Loader 一款轻量的 jQuery 进 ...
- linux常用命令--开发调试篇
前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...
- RabbitMQ高级面试题
本文涉及:投递失败的消息怎么处理.如何实现延时队列.如何指定消息的优先级.消息的持久化是如何实现的.如何保证消息不丢失 投递失败的消息怎么处理 首先投递失败存在如下两个情况 当交换器无法根据自身的类型 ...