MongoDB(课时10 数组)
3.4.2.5 数组查询
MongoDB里面支持数组保存,一旦支持数组保存,就需要对于数组的数据进行匹配。
范例:插入一部分数组内容
课程是数组的形式(截图时少截一条信息)

此时数据包含数组内容,而后需要针对数组数据进行判断,可以使用几个运算符:$all,$size,$slice,$elemMatch。
范例:查询同时参加语文和数学课程的学生
现在两个数组内容都需要查询,所以使用“{"$all, [内容1,内容2,...]"}”
db.students.find({"course" : {"$all" : ["语文", "数学"]}}).pretty()

虽然“$all”计算可以用于数组上,但也可以用于一个数据的匹配上。
范例:查询学生地址是“西城区”
db.students.find({"address" : {"$all" : ["西城区"]}}).pretty()

既然在集合里面现在保存的是数组信息,那么数组就可以索引操作,使用“key.index”。
范例:查询数组中第二个内容为数学的信息(index = 1, 索引下标从0开始)
db.students.find({"course.1" : "数学"}).pretty()

范例:查询只参加两门课程的学生
使用“$size”来进行数量的控制。
db.students.find({"course" : {"$size" : 2}}).pretty()

在进行数据查询的时候只要是内容符合条件,数组的内容就全部显示出来。现在控制返回的数量,使用“$slice”
范例:查询地址在朝阳区的学生信息,但在结果显示中有课程的话,只显示前两门。
db.students.find({"address" : "朝阳区"}, {"course" : {"$slice" : 2}}).pretty()


也可以设置负数显示后两门
db.students.find({"address" : "朝阳区"}, {"course" : {"$slice" : -2}}).pretty()
显示中间几门课程
db.students.find({"address" : "朝阳区"}, {"course" : {"$slice" : [1, 2]}}).pretty()
设置的两个数据中,第一个表示跳过的数据量,第二个表示显示的数量。


比如"谷大神 - A"的中有5门课程,跳过第一门语文,显示接着的两门数学,英语。
MongoDB(课时10 数组)的更多相关文章
- mongodb中对数组的操作命令
mongodb中对数组的操作命令有$push.$ne.$addtoset.$pop.$pull ###addtoset会碰到的问题addtoset解释: 往数组里面加入数据,如果数组里已经存在,则不会 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时10
课时10 神经网络训练细节part1(上) 没有大量的数据也不会有太多影响,只需要找一个经过预训练的卷积神经网络然后进行调整 从数据集中抽样一小批数据, 将数据运入卷积神经网络中来计算损失值 通过反向 ...
- MongoDB按照嵌套数组中的map的某个key无法正常排序的问题
前阵子同事有一个需求: 在一个数组嵌套map的结构中,首先按照map中的某个key进行筛选,再按照map中的某个key进行排序,但是奇怪的是数据总是乱序的. 再检查了代码和数据之后并没有发现什么错误, ...
- C语言基础(10)-数组
一.数组的定义 数组就是在内存中连续的相同类型的变量空间. 二.数组在内存中的存储方式 同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的,数组名是一个地址的常量,代表数组中 ...
- CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)
数组是存储同一类型数据的数据结构 数组的声明与初始化 int[] a; int a[]; int[] a = new int[100]; int[] a = new int[100]; for (in ...
- mongodb morphia删除数组中指定条件的数据
先看mongodb操作: db.test.update({"msgid":170},{"$pull":{"msg":{"comti ...
- 根据数组下标在MongoDB中修改数组元素
如下图这样的数据: 即文档中某个字段是一个数组,而每个数组元素又是一个对象,现在需求是对每个对象中的content字段值作情感分析后,把情感分析得到的结果增加到这个对象中去. 如上图中第1个元素,修改 ...
- mongoDB的shell数组操作器
http://www.2cto.com/database/201304/205024.html mongoDB数组操作器 $push会向数组末尾加入一个元素,如果数组不存在,则会创建这个数组. 增 ...
- mongodb 批量更新 数组的键操作的文件
persons该文件的数据如下面的: > db.persons.find() { "_id" : 2, "name" : 2 } { "_id& ...
随机推荐
- Python + logging 输出到屏幕,将log日志写入文件
日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定的事件.事件由描述性消息描述,该描述性消息可以可选地包含可变数据(即,对于事件的每次出现都潜在地不同的数 ...
- Summary: rand5构造rand7
给一个方法,比如 rand5(), 它能够等概率生成 1-5 之间的整数. 所谓等概率就是1,2,3,4,5 生产的概率均为 0.2 .现在利用rand5(), 构造一个能够等概率生成 1- 7 的方 ...
- http://ttaa.210997.com/恶意修改主页
嗯,,,,之前似乎写过关于篡改主页的文章. 但今天下了个游戏,然后不小心又出现了这个问题. 我先用原始的方式检测了一下(比如检索注册表之类的),但这个不奏效. 省略一些查看问题的方式. 最终得出:新的 ...
- Linux root用户下不能打开Google-chrome的解决办法
在root下打开chrome会出现no sandbox的错误 解决方案: 1.找到google-chrome文件 在目录/opt/google/chrome 下 2.使用gedit打开该文件 最后一行 ...
- Linux服务器配置---ssh配置
Ssh配置 通过配置文件,我们可以有效的管理ssh 1.空闲时间关闭连接 1)修改配置文件“/etc/ssh/sshd_config”,设置clientAliveInterval和client ...
- JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念
JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念 <html> <body> <script type="t ...
- linux 中的定时任务crontab使用方法
linux 中的定时任务crontab使用方法: 切换到root用户,sudo su root (可以设置成不需要输入密码) sudo su - (需要输入当前帐号的密码才能进入.) crontab ...
- sql study
-- ============================================= -- Author: lifu -- Create date: 2017-06-14 -- Descr ...
- 关于STM32外接4—16MHz晶振主频处理方法
由于STM32F10x库官方采用的是默认的外接8MHz晶振,因此造成很多用户也采用了8MHz的晶振,但是,8MHz的晶振不是必须的,其他频点的晶振也是可行的,只需要在库中做相应的修改就行. 在论 ...
- cmd命令分类
1.系统功能类 AT:计划在计算机上运行的命令和程序.ATTRIB:显示或更改文件属性.BREAK:设置或清除扩展式 CTRL+C 检查.CACLS:显示或修改文件的访问控制列表(ACLs).CALL ...