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 数组)的更多相关文章

  1. mongodb中对数组的操作命令

    mongodb中对数组的操作命令有$push.$ne.$addtoset.$pop.$pull ###addtoset会碰到的问题addtoset解释: 往数组里面加入数据,如果数组里已经存在,则不会 ...

  2. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时10

    课时10 神经网络训练细节part1(上) 没有大量的数据也不会有太多影响,只需要找一个经过预训练的卷积神经网络然后进行调整 从数据集中抽样一小批数据, 将数据运入卷积神经网络中来计算损失值 通过反向 ...

  3. MongoDB按照嵌套数组中的map的某个key无法正常排序的问题

    前阵子同事有一个需求: 在一个数组嵌套map的结构中,首先按照map中的某个key进行筛选,再按照map中的某个key进行排序,但是奇怪的是数据总是乱序的. 再检查了代码和数据之后并没有发现什么错误, ...

  4. C语言基础(10)-数组

    一.数组的定义 数组就是在内存中连续的相同类型的变量空间. 二.数组在内存中的存储方式 同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的,数组名是一个地址的常量,代表数组中 ...

  5. CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)

    数组是存储同一类型数据的数据结构 数组的声明与初始化 int[] a; int a[]; int[] a = new int[100]; int[] a = new int[100]; for (in ...

  6. mongodb morphia删除数组中指定条件的数据

    先看mongodb操作: db.test.update({"msgid":170},{"$pull":{"msg":{"comti ...

  7. 根据数组下标在MongoDB中修改数组元素

    如下图这样的数据: 即文档中某个字段是一个数组,而每个数组元素又是一个对象,现在需求是对每个对象中的content字段值作情感分析后,把情感分析得到的结果增加到这个对象中去. 如上图中第1个元素,修改 ...

  8. mongoDB的shell数组操作器

    http://www.2cto.com/database/201304/205024.html mongoDB数组操作器   $push会向数组末尾加入一个元素,如果数组不存在,则会创建这个数组. 增 ...

  9. mongodb 批量更新 数组的键操作的文件

    persons该文件的数据如下面的: > db.persons.find() { "_id" : 2, "name" : 2 } { "_id& ...

随机推荐

  1. Bootstrap 网格系统(Grid System)的工作原理 - 媒体查询

    媒体查询 媒体查询是非常别致的"有条件的 CSS 规则".它只适用于一些基于某些规定条件的 CSS.如果满足那些条件,则应用相应的样式. Bootstrap 中的媒体查询允许您基于 ...

  2. 4.keras实现-->生成式深度学习之用变分自编码器VAE生成图像(mnist数据集和名人头像数据集)

    变分自编码器(VAE,variatinal autoencoder)   VS    生成式对抗网络(GAN,generative adversarial network) 两者不仅适用于图像,还可以 ...

  3. 接口自动化测试框架搭建 – Java+TestNG 测试Restful service

    接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...

  4. 转载 vsftpd安装

    http://blog.csdn.net/shutfuckingup/article/details/8250290 1:安装vsftpd    yum install vsftpd 2:关闭防火墙 ...

  5. 论文笔记:语音情感识别(三)手工特征+CRNN

    一:Emotion Recognition from Human Speech Using Temporal Information and Deep Learning(2018 InterSpeec ...

  6. 1.hive开窗函数,分析函数

    http://yugouai.iteye.com/blog/1908121 分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行.开窗函数指 ...

  7. 如何安装Apache

    第一步:将Apache24解压到C盘根目录下 第二步:进入C:\Apache24\bin目录下 第三步:打开浏览器,网页中输入localhost,返回结果为It works!则说明Apache安装配置 ...

  8. Python3 解决 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

    Python3 解决 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte 一.问题 request.Reque ...

  9. 集成利用tesseract.exe进行ocr

    ocr是一个宽泛的概念.市场上面ocr将一直是一个不断发展.需求强烈的方向. 我认为,从难度上区分,中文ocr难于英文ocr;手写ocr难于印刷ocr.所以两两组合,中文手写体最难(比如毛体,有一些人 ...

  10. 20145317彭垚《网络对抗》Exp6 信息搜集与漏洞扫描

    20145317彭垚<网络对抗>Exp6 信息搜集与漏洞扫描 问题回答 1.哪些组织负责DNS,IP的管理? DNS域名服务器:绝大多数在欧洲和北美洲,中国仅拥有镜像服务器. 全球一共有5 ...