MongoDB中数组练习

一、运行以下代码,生成原始数据

import random
from pymongo import MongoClientclient = MongoClient().shuzu.example
name_list = ['衬衣', '裤子', '鞋子', '帽子']
size_list = ['S', 'M', 'L', 'XL']
price_list = [100, 200, 300, 600, 800]for i in range(10):random_ = random.randint(2, 4)client.insert_one({'name': random.choice(name_list),'size': random.sample(size_list, random_),'price': random.sample(price_list, random_)})

二、练习要求:

TIP:利用 $1t,$gt,$ne,$gte等操作符利用数组的索引特性,能够定位到数据的具体数据,比如price.0可以直接在robo3t上完成

1、查询所有size不包含M的记录

> db.example.find({size:{$nin:["M"]}})
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea54"), "name" : "帽子", "size" : [ "L", "XL" ], "price" : [ 300, 600 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea57"), "name" : "鞋子", "size" : [ "XL", "L" ], "price" : [ 800, 300 ] }

2、查询price至少有一个元素在200~300之间

> db.example.find({$and:[{price:{$gte:NumberInt(200)}},{price:{$lte:NumberInt(300)}}]})
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea4e"), "name" : "衬衣", "size" : [ "S", "M", "XL", "L" ], "price" : [ 200, 100, 600, 300 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea4f"), "name" : "衬衣", "size" : [ "XL", "M", "S" ], "price" : [ 200, 800, 600 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea50"), "name" : "裤子", "size" : [ "M", "XL", "L", "S" ], "price" : [ 800, 100, 300, 200 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea51"), "name" : "鞋子", "size" : [ "M", "XL", "L", "S" ], "price" : [ 600, 300, 200, 100 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea52"), "name" : "帽子", "size" : [ "L", "M", "XL" ], "price" : [ 100, 300, 800 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea53"), "name" : "帽子", "size" : [ "S", "L", "XL", "M" ], "price" : [ 200, 300, 600, 100 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea54"), "name" : "帽子", "size" : [ "L", "XL" ], "price" : [ 300, 600 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea55"), "name" : "衬衣", "size" : [ "M", "XL", "S", "L" ], "price" : [ 300, 200, 600, 100 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea56"), "name" : "裤子", "size" : [ "M", "XL", "L" ], "price" : [ 300, 100, 800 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea57"), "name" : "鞋子", "size" : [ "XL", "L" ], "price" : [ 800, 300 ] }
> db.example.find({price:{$gte:200,$lte:300}})
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea4e"), "name" : "衬衣", "size" : [ "S", "M", "XL", "L" ], "price" : [ 200, 100, 600, 300 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea4f"), "name" : "衬衣", "size" : [ "XL", "M", "S" ], "price" : [ 200, 800, 600 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea50"), "name" : "裤子", "size" : [ "M", "XL", "L", "S" ], "price" : [ 800, 100, 300, 200 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea51"), "name" : "鞋子", "size" : [ "M", "XL", "L", "S" ], "price" : [ 600, 300, 200, 100 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea52"), "name" : "帽子", "size" : [ "L", "M", "XL" ], "price" : [ 100, 300, 800 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea53"), "name" : "帽子", "size" : [ "S", "L", "XL", "M" ], "price" : [ 200, 300, 600, 100 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea54"), "name" : "帽子", "size" : [ "L", "XL" ], "price" : [ 300, 600 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea55"), "name" : "衬衣", "size" : [ "M", "XL", "S", "L" ], "price" : [ 300, 200, 600, 100 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea56"), "name" : "裤子", "size" : [ "M", "XL", "L" ], "price" : [ 300, 100, 800 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea57"), "name" : "鞋子", "size" : [ "XL", "L" ], "price" : [ 800, 300 ] }

3、查询所有price字段长度为2的记录

> db.example.find({price:{$size:2}})
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea54"), "name" : "帽子", "size" : [ "L", "XL" ], "price" : [ 300, 600 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea57"), "name" : "鞋子", "size" : [ "XL", "L" ], "price" : [ 800, 300 ] }

4、所有size第1个数据为S的记录

> db.example.find({"size.0":"S"})
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea4e"), "name" : "衬衣", "size" : [ "S", "M", "XL", "L" ], "price" : [ 200, 100, 600, 300 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea53"), "name" : "帽子", "size" : [ "S", "L", "XL", "M" ], "price" : [ 200, 300, 600, 100 ] }

5、price第1个数据大于500的记录

> db.example.find({"price.0":{$gt:500}})
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea50"), "name" : "裤子", "size" : [ "M", "XL", "L", "S" ], "price" : [ 800, 100, 300, 200 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea51"), "name" : "鞋子", "size" : [ "M", "XL", "L", "S" ], "price" : [ 600, 300, 200, 100 ] }
{ "_id" : ObjectId("5fc1b4e597852f20e2cdea57"), "name" : "鞋子", "size" : [ "XL", "L" ], "price" : [ 800, 300 ] }

mongodb分组操作

一、根据以下代码生成数据

import random
from pymongo import MongoClientclient = MongoClient().fenzu.example
name_list = ['张三', '李四', '王五', '赵六']
date_list = ['2018/6/1', '2018/6/2', '2018/6/3', '2018/6/4']for i in range(20):client.insert_one({'name': random.choice(name_list),'date': random.choice(date_list),'score': random.randint(50, 100)})
# 运行后的数据如下所示:
> db.example.find()
{ "_id" : ObjectId("5fc885939400eb511abb08c5"), "name" : "张三", "date" : "2018/6/2", "score" : 71 }
{ "_id" : ObjectId("5fc885939400eb511abb08c6"), "name" : "王五", "date" : "2018/6/4", "score" : 76 }
{ "_id" : ObjectId("5fc885939400eb511abb08c7"), "name" : "赵六", "date" : "2018/6/2", "score" : 54 }
{ "_id" : ObjectId("5fc885939400eb511abb08c8"), "name" : "李四", "date" : "2018/6/4", "score" : 97 }
{ "_id" : ObjectId("5fc885939400eb511abb08c9"), "name" : "李四", "date" : "2018/6/1", "score" : 79 }
{ "_id" : ObjectId("5fc885939400eb511abb08ca"), "name" : "张三", "date" : "2018/6/3", "score" : 82 }
{ "_id" : ObjectId("5fc885939400eb511abb08cb"), "name" : "李四", "date" : "2018/6/3", "score" : 88 }
{ "_id" : ObjectId("5fc885939400eb511abb08cc"), "name" : "张三", "date" : "2018/6/3", "score" : 100 }
{ "_id" : ObjectId("5fc885939400eb511abb08cd"), "name" : "李四", "date" : "2018/6/1", "score" : 89 }
{ "_id" : ObjectId("5fc885939400eb511abb08ce"), "name" : "李四", "date" : "2018/6/3", "score" : 98 }
{ "_id" : ObjectId("5fc885939400eb511abb08cf"), "name" : "赵六", "date" : "2018/6/2", "score" : 70 }
{ "_id" : ObjectId("5fc885939400eb511abb08d0"), "name" : "李四", "date" : "2018/6/2", "score" : 100 }
{ "_id" : ObjectId("5fc885939400eb511abb08d1"), "name" : "张三", "date" : "2018/6/2", "score" : 70 }
{ "_id" : ObjectId("5fc885939400eb511abb08d2"), "name" : "赵六", "date" : "2018/6/1", "score" : 76 }
{ "_id" : ObjectId("5fc885939400eb511abb08d3"), "name" : "张三", "date" : "2018/6/3", "score" : 56 }
{ "_id" : ObjectId("5fc885939400eb511abb08d4"), "name" : "张三", "date" : "2018/6/1", "score" : 75 }
{ "_id" : ObjectId("5fc885939400eb511abb08d5"), "name" : "李四", "date" : "2018/6/3", "score" : 63 }
{ "_id" : ObjectId("5fc885939400eb511abb08d6"), "name" : "李四", "date" : "2018/6/2", "score" : 71 }
{ "_id" : ObjectId("5fc885939400eb511abb08d7"), "name" : "王五", "date" : "2018/6/4", "score" : 83 }
{ "_id" : ObjectId("5fc885939400eb511abb08d8"), "name" : "赵六", "date" : "2018/6/3", "score" : 69 }

二、操作要求

1、统计每个人的记录数量

> db.example.aggregate([{$group:{_id:"$name",countnum:{$sum:1}}}])
{ "_id" : "李四", "countnum" : 8 }
{ "_id" : "赵六", "countnum" : 4 }
{ "_id" : "王五", "countnum" : 2 }
{ "_id" : "张三", "countnum" : 6 }

2、所有分数大于70,只返回name和score

> db.example.find({score:{$gt:70}},{name:1,score:1,_id:0})
{ "name" : "张三", "score" : 71 }
{ "name" : "王五", "score" : 76 }
{ "name" : "李四", "score" : 97 }
{ "name" : "李四", "score" : 79 }
{ "name" : "张三", "score" : 82 }
{ "name" : "李四", "score" : 88 }
{ "name" : "张三", "score" : 100 }
{ "name" : "李四", "score" : 89 }
{ "name" : "李四", "score" : 98 }
{ "name" : "李四", "score" : 100 }
{ "name" : "赵六", "score" : 76 }
{ "name" : "张三", "score" : 75 }
{ "name" : "李四", "score" : 71 }
{ "name" : "王五", "score" : 83 }

3、计算每个人得分的最大值、最小值、得分之和还有平均分

> db.example.aggregate([{$group:{_id:"$name",maxnum:{$max:"$score"},minnum:{$min:"$score"},sumnum:{$sum:"$score"},avgnum:{$avg:"$score"}}}])
{ "_id" : "李四", "maxnum" : 100, "minnum" : 63, "sumnum" : 685, "avgnum" : 85.625 }
{ "_id" : "赵六", "maxnum" : 76, "minnum" : 54, "sumnum" : 269, "avgnum" : 67.25 }
{ "_id" : "王五", "maxnum" : 83, "minnum" : 76, "sumnum" : 159, "avgnum" : 79.5 }
{ "_id" : "张三", "maxnum" : 100, "minnum" : 56, "sumnum" : 454, "avgnum" : 75.66666666666667 }

MongoDB实验练习题相关推荐

  1. mongodb实验报告_Dropwizard,MongoDB和Gradle实验

    mongodb实验报告 介绍 我使用Dropwizard,MongoDB和Gradle创建了一个小项目. 它实际上是作为一个实验性的Guava缓存开始的,作为将计数器发送到MongoDB(或任何其他D ...

  2. matlab数学实验 南邮,matlab实验练习题(计算机)-南邮-matlab-数学实验大作业答案

    matlab实验练习题(计算机)-南邮-matlab-数学实验大作业答案 1"MATLAB"练习题练习题要求:抄题.写出操作命令.运行结果,并根据要求,贴上运行图.1.求的所有根. ...

  3. MongoDB 实验——数据备份和恢复和数据库优化

    第1关:数据备份 本关任务:按照编程要求备份数据库. 第2关:数据恢复 本关任务:按照编程要求恢复数据. MongoDB 实验--数据库优化 第1关:MongoDB 查询优化原则 第1题 CD 第2题 ...

  4. 头歌 · NoSQL系列课程 · Neo4J / MongoDB 实验

    科研部建设中,覆盖歌云端实验平台对于Neoj4.MongoDB 的实验项目 目录 目录 ​编辑 Neo4j  实验一.二 MonGoDB实验三.四 实验五六.redis Neo4j  实验一.二 // ...

  5. 数学实验matlab课后习题,数学实验练习题(MATLAB)

    注意:在下面的题目中m 为你的学号的后3位(1-9班)或4位(10班以上). 第一次练习题 1.求解下列各题: 1)30sin lim x mx mx x ->- 2)(4)cos ,1000. ...

  6. educoder MongoDB 实验——数据库优化

    第1关:MongoDB 查询优化原则 1.CD 2.AD 3.AC 4.ABD 5.BCD 6.ABCD 7.CD 8.AD 第二关: mongo mydbdb.setProfilingLevel(1 ...

  7. 操作系统实验之掌握基本SHELL命令(一)

    实验一  掌握基本SHELL命令 [实验要求] 所有练习题保留题目要求,在题目要求后面直接贴上在虚拟机执行的命令及输出结果(可从虚拟机拷贝过来),或者是屏幕截图. 请保持排版整齐. 提示:可在练习开始 ...

  8. 学习搭建Hadoop+HBase+ZooKeeper分布式集群环境

    一.环境配置 由于集群至少需要三台服务器,我就拿上次做的MongoDB Master, Slave, Arbiter环境来做Hadoop集群.服务器还是ibmcloud 免费提供的.其中Arbiter ...

  9. matlab考试资料,MATLAB复习资料

    10级MATLAB上机实验练习题 1.给出一个系数矩阵A[2 3 4;5 4 1;1 3 2],U=[1 2 3],求出线性方程组的一个精确解. 2.给出两组数据x=[0 0.3 0.8 1.1 1. ...

  10. 计算机一级b考试教程,全国计算机等级考试一级B教程

    第一章  计算机基础知识 1.1  概述 1.1.1  什么是计算机 1.1.2  计算机的发展概况 1.1.3  计算机的应用领域 1.1.4  计算机的应用领域 1.2  计算机中的数与编码 1. ...

最新文章

  1. 解决新版的vue-cli后无法通过ip访问vue项目
  2. 阿里软件测试工程师手把手教学——如何更好地设计测试用例?
  3. Jenkins之邮件通知
  4. vector的基本用法 (详解 + 代码演示)
  5. 应用配置管理ACM 使用场景快速入门
  6. int 转为字节后 低字节在前_NumPy 字节交换
  7. Windows安装Linux, (WSL)Windows Subsystem for Linux
  8. linux里终端安转视频播放器的操作及显示
  9. HTML+CSS+JAVASCRIPT 高仿低配网页版网易云音乐播放器
  10. 高通下载模式9008
  11. Win11 Android Stuido虚拟机启动失败、崩溃
  12. 免费赠送20个帆布包和2个咖啡杯活动规则必看(会搜索+复制粘贴就行)
  13. (转载)QTableWidget详细用法总结(非常详细,基本所有常用函数都涉及了)
  14. 2022-2027年中国消防器材制造行业发展前景及投资战略咨询报告
  15. JAVA基础加强篇09——IO流
  16. 根据2021年天文年历计算非表列的其他时刻的太阳赤经纬
  17. 血饮龙纹、百战沙城,静默安装,卸载了以后 没几个小时就又安装到电脑了
  18. iPhone人物拍照调色
  19. mysql 空集 赋值_如何在MySQL查询中替换“空集”?
  20. ecshop和Ucenter 通信失败终极解决方法!(附带php5.3以上,出现其他问题解决方法)

热门文章

  1. 学习uc/os-ii
  2. Z05 - 004、网站流量多维度细分(流量分析)
  3. zemax设计35mm镜头_ZEMAX基础实例 - 变焦镜头设计
  4. 计算机基础知识竞赛题,计算机基础知识竞赛题答案
  5. Win7设置wifi热点
  6. MySQL基本数据类型
  7. 北京科技大学计算机考研
  8. 【bWAPP】XSS通关记录
  9. IE、FF、Safari、OP不同浏览器兼容报告
  10. IMDB算法(贝叶斯算法)