1、首先在MongoDB里面是支持数组保存的,一旦支持数组保存,需要针对数组的数据进行匹配;
(01)、范例:保存一部分数组数据
db.students.insert({"name":"古大神 - A", "age":15, "sex": "男", "seore": 90, "adderss": "海淀区", "course": ["语文", "数学", "英语", "音乐", "美术"]});
db.students.insert({"name":"古大神 - B", "age":16, "sex": "男", "seore": 88, "adderss": "海淀区", "course": ["语文", "数学", "政治"]});
db.students.insert({"name":"古大神 - C", "age":19, "sex": "女", "seore": 98, "adderss": "海淀区", "course": ["语文", "音乐", "美术"]});
db.students.insert({"name":"古大神 - D", "age":16, "sex": "男", "seore": 80, "adderss": "朝阳区", "course": ["语文", "美术"]});
(02)、此时的数据中包括了数组数据,而后需要针对于数组数据进行判断,可以使用几个运算符: $all、$size、$slice、$elemMatch
(03)、范例:查询同时参数语文和数学课程的学生 => {"$all": ["语文","数学"]} => "$all" 筛选内容必须包含筛选条件及更多内容的项,只能多不能少;
db.students.find({"course": {"$all": ["语文", "数学"]}}).pretty();
“$all”计算可以用在数组上,也可以用于一个数据的匹配上 => db.students.find({"adderss": {"$all": ["海淀区"]}}).pretty();
(04)、既然在集合中保存了数组信息,那么数组就可以利用索引操作:key.index的方式定义索引
范例:查询数组信息中第二个内容(index = 1),为数学的信息 => db.students.find({"course.1": "数学"}).pretty();
(05)、范例:查询出值参加两门课程的学生:使用运算符 $size 来进行数值的控制 => db.students.find({"course": {"$size": 2}}).pretty();
(06)、控制数组返回的数量:使用$slice控制
范例:返回年龄为19岁所有学生的信息,但是要求只显示参加两门课 => db.students.find({"age": 19}, {"course": {"$slice": 2}}).pretty();
# 2:整数表示前两门,-2:表示后两门,[1,2]: 表示跳过第一个后面两个