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. 提示'HTTP消息不可读'

    1.提示下面的错误信息 2.修改后的代码,费用接口 import unittest import requests import json import HTMLTestRunner ur1 = 'h ...

  2. [LeetCode] 458. Poor Pigs_Easy tag: Math

    There are 1000 buckets, one and only one of them contains poison, the rest are filled with water. Th ...

  3. Oracle业务用户密码过期问题的解决

    实验环境:Oracle 11.2.0.4 如果DBA不知道业务用户密码,当业务密码过期,应用要求DBA帮忙重设为原来的密码. 1.查询业务用户密码 从user$查到hash加密过的值: select ...

  4. C# 拼接字符串的几种方式和性能

    开发过程中常用到的拼接字符串的方法有三种: 1 简单 “+=” 拼接法 1 2 3 4 5 string str="a";   str+="c"+"d ...

  5. SV搭建验证环境

    1)首先定义纯虚类Sv_object,主要实现下边两个function: 定义local static 变量nextobjectID; 虚方法 virtual function void copy(S ...

  6. 【week6】团队贡献分

    小组名称:nice! 小组成员:李权 于淼 杨柳 刘芳芳 项目内容:约跑app 完成任务:   10% 20% 70% 好   于淼 李权 中   刘芳芳 杨柳 差       1.李权8.4 2.于 ...

  7. lnmp之php5.6.29安装

    linux下lnmp环境之php安装 为了防止出现缺失,安装下面集成,复制的时候请将这个复制成一个整行,下面3行是一整行 [root@localhost src]# yum -y install gc ...

  8. Linux命令: 向文件写内容,编辑文件,保存文件,查看文件,不保存文件

    1.找到要编辑的文件 2.敲  vi t1.txt ,显示文件内容(vim命令) 3.敲 i,最下面变成INSERT 4.编辑自己想要的内容 5a.敲ESC:wq回车 5b.如果不想保存文件在时敲ES ...

  9. php 字符串长度函数

    php 字符串长度函数 php 字符串长度函数,在php测试字符串长度的函数有二个,一个是strlen,另一个是mb_strlen前一个默认是支持,后一个需要开启一个插件,下面我们来介绍一下二个函数的 ...

  10. Non-resolvable parent POM

    今天导入公司项目,maven聚合项目,但是项目目录结构不正确,内层的项目的parent不是外层项目,这个......有点无语,结果导入直接报错.同事说,我们导入是好好的啊,原来他们用的是eclipse ...