MongoDB的基础

操作条件:

 1,已经安装好的MongoDB

 2,进入到MongoDB中

基础操作:

0) show dbs #查看所有的库

1) use mydb #进入mydb库,如果mydb不存在将创建一个mydb数据库并进入

2) db #查看你当前所在的库

3) db.dropDatabase() # 删除数据库(在进入库后,输入)

4)  show collections # 查看库中的集合(进入库后)

5) db.createCollection('集合名') #创建一个集合,相当于MySQL中的table

6) db.集合名.insert([{"x":"y","z":1,...} , {...},...]) #创建一个集合并向里面写入一个或者多个文档  

      如果集合已经存在,将向里面写入文档

7) db.集合名.remove({文档中的元素},1/0) #删除具体条件 

第二位为1时:删除一条符合条件的文档 为零时或者不写:则是删除全部符合条件的文档

8) db.集合名.remove({}) #删除集合中的全部文档

9) db.集合名.find() #查询的集合中的文档(在末尾处加.pretty() 则可以使其格式化显示)

-------------------------------------分割线---------------------------------------

集合中条件内容的查询操作:

$it <
 1) db.集合名.find({"xxx":{$it:50}}).pretty() #查询集合中的xxx小于50的文档 格式化显示

$ite <=

2) db.集合名.find({"xxx":{$ite:50}}).pretty() #查询集合中的xxx小于等于50的文档 格式化显示

$gt >

3) db.集合名.find({"xxx":{$gt:20}}).pretty() #查询集合中的xxx大于20的文档 格式化显示

$gte >=

4) db.集合名.find({"xxx":{$gte:20}}).pretty() #查询集合中的xxx大于等于20的文档 格式化显示

$ne !=

5) db.集合名.find({"xxx":{$ne:30}}).pretty() #查询集合中的xxx不等于20的文档 格式化显示

$and 和

6) db.集合名.find({$and:[{条件1},{条件2},...]}).pretty() #查询集合中符合条件1同时又符合条件2的-文档

$or 或

7) db.集合名.find({$or:[{条件1},{条件2},...]}).pretty() #查询集中中符合条件1或符合条件2的文档

$in

$nin

8) db.集合名.find({"xxx":{$in:["yyy","zzz",...]}}).pretty() #查询集合中"xxx": 中属于"yyy"/"zzz"/...的文档 

   db.集合名.find({"xxx":{$nin:["yyy","zzz",...]}}).pretty() #查询集合中"xxx": 中不属于"yyy"/"zzz"/...的文档 

-------------------------------------分割线---------------------------------------

修改文档,更新文档
$set 修改器:指定一个字段值,如果该字段不存在,则创建它
db.集合名.update(查询文档,修剪文档器)
db.集合名.update({条件},{$set:{"x":30}}) #把集合中符合条件的文档的"x"的键值修改为30
db.集合名.update({条件},{$set:{"x":[1,2,3,4]}}) #把集合中符合条件的文档的"x"的键值修改为[1,2,3,4]

$unset 将某个键完全删除
db.集合名.update({条件},{$unset:{"x":1}}) #删除符合条件的"x"键

$inc 增加已有的键的值,若该键不存在的话,就创建一个
db.集合名.update({条件},{$inc:{"x":20}}) #把集合中符合条件的文档的"x"的键值自增长20

$push 向集中的文档中的数组中添加元素
db.集合名.update({条件},{$push:{"x":'y'}}) #把符合条件的文档的键为"x"的元组中添加元素y

$pop 从数组中任何一端删除元素
db.集合名.update({条件},{$pop:{"key":1/-1}}) 
当为1时删除元组中的末尾元素,当为-1时删除元组中的首位2元素

$pull 根据具体条件删除元组信息
db.集合名.update({},{$pull:{"x":"y"}}) #删除元组"x"中元素y

----------------------------------分割线------------------------------------
集合查询的其他操作
db.集合名.find({},{"_id":1,"key":1/-1}) 
#查询显示当文档中的键设为1为显示,0为隐藏 "_id"默认显示 key的默认是不显示

limet() skip() sort()
db.集合名.find().pretty().limit(x)  #把集合的前x个文档显示出来
db.集合名.find().pretty().skip(y)  #跳过开头y个文档显示
db.集合名.find().pretty().sort("key":1/-1) #根据键的值进行升序(1)和降序(-1)排列显示

$all 多个元素匹配数组
db.集合名.find({"key"{$all:["x","y"...]}}).pretty() #查询键值元组中同时有"x","y"...元素的文档

$size 查询特定长度的数组
db.集合名.find({"key":{$size:x}}) #查询键值元组中元素有x个的文档

$slice 返回某个键值的数组元素的一个子集
db.集合名.find({条件},{"key":{$slice:x/-x/[x,y]}}) 
返回符合条件的文档,键值元组的前x个元素组成的元组/键值元组的后x个元素的组成的元组/键值元组的x到y位置的元素组成的元组 

文本搜索:
首先要在想要搜索的key的键值设置文本连接
db.集合名.createIndex({"key":"text","key":"text",...}) #key的键值为字符串
设置文本连接查询 有这个设置才能使用文本搜索

$text $search
db.集合名.find({$text:{$search:"x y -z ..."}})  #查询文本连接中包含"x"/"y"...同时不包含z的文档信息
注:使用$text和$search,可以忽略字符串的大小问题 用"-"表示不包含

db.集合名.find({$text:{$search:"x \"y z\"}})  #查询文档连接中包含"x"或者包含"y z"的文档

$score $meta
db.集合名.find({文本搜索},{$score:{$meta:"textScore"}}).sort({$score:{$mate:"textScore"}}) 
#{$score{$meta:"textScore"}} 是匹配度的分数 按照匹配度的分数降序排列

$elemMatch 查询内嵌文档
db.集合名.find({"key":{$elemMatch:{"key":1,"key":2,...}}}).pretty()
#查询key键值元组中各个文档中的key:1的或者key:2的...的文档 
                                   ||
db.集合名.find("key.key":1,"key.key":2,....).pretty()

修改内嵌文档元素
db.集合名.update({条件},{$set:{"key.x.key":1}}) 把条件下的键值数组的 第x位的 内嵌文档的 键值修改为1

修改全部的内嵌文档元素
db.集合名.update({条件},{$set:{"key.$.key":1}},{multi:true}) 把条件下的键值数组的 全部 内嵌文档的 键值修改为1
db.集合名.update({查询条件},{修改内容},{同一修改})

管道操作符
注:{匹配条件} 可以省略 省略就是全档查询 
$match 匹配状态
db.集合名.aggregate({$match:{"key":x}}) #匹配键值为x的文档


$group 匹配分组
$sum 匹配求和
db.集合名.aggregate({匹配条件},{$group:{"_id":"$key1",sums:{$sum:"$key2"}}})
#以key1键值分组(相同的一组),并求出key2键值的和 (sums为显示的键)

$group 匹配分组
$avg 匹配求平均值
db.集合名.aggregate({匹配条件},{$group:{"_id":"$key1",avgs:{$avg:"$key2"}}})
#以key1键值分组(相同的一组),并求出key2键的平均值 (avgs为显示的键)

$project 重塑文档结构
db.集合名.aggregate([{匹配条件},{$project:{"key":1/0,"_id":0,...}}]) #显示key:1的 当key:0时隐藏

$unwind 把数组中的元素逐个展示,一个文档转为多个文档
db.集合名.aggregate([{匹配条件},{$unwind:"$key"}]) #键值元组逐个显示形成多个文档

$sort 文档排序 1:升序 -1:降序
db.集合名.aggregate([{匹配条件},{$sort:{"key":1}}]) #以key的键值来升序排列

$limit 显示文档显示的数量
db.集合名.aggregate([{匹配条件},{$limit:x}}]) #显示x个匹配文档

$skip 跳过开始的几个文档
db.集合名.aggregate([{匹配条件},{$skip:x}}]) #跳过开头的x个匹配文档

$lookup 连接显示
db.集合名1.aggregate([{匹配条件}, {$lookup:{from:"集合2",localField:"集合1的key",foreignField:"集合2的key",
as:"key"}}])
注:集合1的key值和集合2的键值有相同的 连接显示集合1和集合2 as后是更新名字显示

$cond
db.集合名.aggregate([{匹配条件},{$project:{"key":{$cond:{if:{布尔表达式},then:"x",else:"y"}}}}])
匹配条件中符合布尔表达式的增加键及键值x,不符合的增加键和键值y
注:if后一定要有then和else

$setIntersection #返回数组中的相同部分 一个文档中
db.集合名.aggregate([{匹配条件},{$project:{"key":{$setIntersection:["$key1","$key2"]}}}])

$redact 编排文档 操作数据
db.集合名.aggregate({匹配条件},{$redact:{$cond:{if:{布尔表达式},then:"$$DESCEND",else:"$$PRUNE"}}})
#把符合的条件结果显示出来
注:$redact通常和$cond一起用

$$DESCEND #表示符合条件的文档显示出来
$$PRUNE #表示不符合条件的文档剔除

map-reduce函数
db.集合1.mapReduce(
 function(){emit(this.key1,this.key2,...)},
 function(key,values){return Array.sum(values)},
 {quert:{搜索条件},
out:"集合2"})

把集合1中的key1,key2进行映射 映射到key和values中
Array.sum(valuse) 在进行数组求和
把集合1的key1作为集合2的id 把集合1的key2中的数字元素相加形成value:元素总和

第一步:query ;第二步map(映射),就是emit函数;第三步:reduce(化简把元组中的元素化简为一个元素)

count()
db.集合名.count() #查询集合中有多少文档

distinct()
db.集合名.distinct("key") #显示文档中所有key的不相同的键值
 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值