概述
MongoDB是一种非关系型数据库,以{key:value,key:value}这种结构来存储数据。
CRUD操作
文档主键:支持除数组外的所有数据类型。
- 创建
db
- 读取
db.<要读取的集合>.find()
db.<要读取的集合>.find(<读取文档的筛选条件>,<读取结果进行投射>)
db.<要读取的集合>.find(<字段值>:{$操作符:某值})
比较操作符:
$eq:相等/$ne:不相等/$gt:大于/$gte:大于等于/$lt:小于/$lte:小于等于/$in:in/$nin:not in 逻辑操作符:
$not/$and/$or/$nor 字段操作符:
$exists:匹配查询的字段/$type:匹配字段乐星符合的查询 数组操作符:
$all:匹配数组字段中包含所查询值/$elemMatch:匹配数组字段中至少一个满足筛选条件的文档 运算操作符:
$regex:匹配满足正则的文档 游标函数:
cursor:hasNext()/cursor.next()/cursor:forEach()/cursor.limit()/cursor.count()/cuursor.sort()/cursor.skip()---------skip()在limit之前执行,sort在skip和limit之前执行
- 更新文档
db.<collection>.update(<更新条件,<更新内容>,<更新的选项和参数>>) //使用参数名。 可以更新内嵌字段
更新操作符:
$set更新或新增字段/$unset删除字段/$rename重命名/$inc加减字段/$mul相乘字段/$min 比较小的字段值/$max比较大的字段值 数组更新操作符:
$pull:内嵌文档不一定完全一致/$pullAll:删除时要求内嵌文档完全一致。
$push:向数组中添加元素。和$addToSet命令类似,如果添加字段不一致,字段会添加到原文档中
- 删除文档/集合
db.<要操作的集合>.remove(<条件>,<声明删除操作的参数>)
db.<要操作的集合>.drop() //删除集合
聚合操作
db.<要操作的集合>.aggregate.(<管道阶段和聚合操作符>,<聚合有关的参数>)
- $project-----控制输出格式,投影
- $match--------筛选
- 两者组合
- $unwind----展开数组
- $sort
- $lookup-----相当于mysql的某一字段关联,as中是笛卡尔积
//使用方法1
$lookup:{
from:<同一数据库的另外一个集合>,
localField:<用来查询的字段名字>,
foreignField:<from中的查询字段>
as:<查询集合中字段的内容>
}
//使用方法2
$lookup:{
from:<另外一个要参照的集合>,
let:<如果需要参考管道文档中的字段,必须先使用let进行声明>
pipeline:[对要查询的集合先进行处理]
使用方法1
使用方法2
- $group
分组计算
- $out-------将管道中的文档写入一个新集合