开发者学堂课程【快速掌握 MongoDB 数据库:数组运算】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/400/detail/5200
数组运算
首先在 mongoDB 里面是支持数组保存的,一旦支持了数组保存, 就需要针对于数组的数据进行匹配。
范例:保存一部分数组内容
db.students.insert( i "name":
"谷大神-A"."sex":"男
" ,"age":19,"score":89,"address"
"course"
:["语文","数学","英语","音乐","政治"]}) ;
db.students.insert( i "name"
:"谷大神-B" "sex":"男
" ,"age":19,"score":89,"address"
"course":
["语文""数学"]}) ;
d.students.insert( {"name"∵
"谷大神-C" "sex":"男
" ,"age":19,"score":89,"address"
"course"
:["语文""数学","英语"]}) ;
db.students .insert("name"
:"谷大神-D".,"sex":"男
","age":19,"score":89,"address'
"course"
:["英语","音乐","政治"]}) ;
db.students.insert( i "name"
:"谷大神–E" ,"sex":"男" ,"
age":19,"score":89,"address"
"course"
:["语文""政治"]});
此时的数据包含有数组内容,而后需要针对于数组数据进行判断,可以使用几个运算符:
$a11、$size、$slice、$elemMatch。
范例:查询|同时参加语文和数学课程的学生。
现在两个数组内容都需要保存,所以使用“{"$all",[内容1,内容2...]}”
db.students.find( {"course" : {"$all"
:["语文","数学"]}}).pretty(
)
:
现在所有显示的学生信息里面包含语文和数学的内容,而如果差一个内容的不会显示。
结果:
"_id": objectId("5594b0a2eecd74894d19fffb"),
"name"
: 谷大神- c",
"sex”
:“男…,
"age""
: 19,
"score"
: 89,、
"address":
“海淀区”,
"course": [
“语文",“数学",“英语"
虽然“Sall”计算可以用于数组上,但是也可以用于一个数据的匹配上。
范例:查询学生地址是“海淀区”。
db.students.find({ "address" : {"$a
ll
":
["海淀区"}}).pretty(
)
既然在集合里面现在保存的是数组信息,那么数组就可以利用索引操作,使用“key index”的方式来定义索引。
范例:查询数组中第二个内容( index = 1,索引下标从0开始)为数学的信息
db.students.find({"course.1":
"数学"}).pretty
()
;
范例:要求查询出只参加两门课程的学生,
·使用“$size”来进行数量的控制。
db.students.find( {"course" : {"$size": 2}}).pretty
()
;
发现在进行数据查询的时候只要是内容复合条件,数组的内容就全部显示出来了,但是现在希望可以控制数组的返回的数量,那么可以使用“$slice”进行控制。
范例:返回年龄为19 岁所有学生的信息,但是要求只显示两门参加课程.
db.students.find( { "age" : 19} , {"course" : {"$slice" : 2}}).pretty
(
) ;
结果:
_id" : ObjectId( "5594b0a2eecd74894d19fffc")
"name"
: 谷大神- D”,
"sex”
:“男,
age""
: 19,
score"
: 8s,
address""
:海淀区”,
course"":[
“英语",“音乐"
现在只取得了前两门的信息,那么也可以设置负数表示取出后两门的信息。
db.students.find( { "age" : 19} , { "course" : {"Sslice" : -
2}}).pretty(
);
或者只是取出中间部分的信息。
db.students.find( { "age" : 19} , {"course" : {"$slice" :
[1,1]}}).pretty(
)
;
在此时设置的两个数据里面第一个数据表示跳过的数据量,而第二个数据表示返回的数量。