概述

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-----控制输出格式,投影




mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_数组


  • $match--------筛选


mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_字段_02


  • 两者组合


mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_mongodb 输出数组字段_03


  • $unwind----展开数组


mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_数组_04


  • $sort


mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_操作符_05


  • $lookup-----相当于mysql的某一字段关联,as中是笛卡尔积
//使用方法1
$lookup:{
  from:<同一数据库的另外一个集合>,
  localField:<用来查询的字段名字>,
  foreignField:<from中的查询字段>
  as:<查询集合中字段的内容>
}

//使用方法2
$lookup:{
   from:<另外一个要参照的集合>,
   let:<如果需要参考管道文档中的字段,必须先使用let进行声明>
   pipeline:[对要查询的集合先进行处理]


mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_字段_06

使用方法1

mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_字段_07

使用方法2

  • $group


mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_数组_08

分组计算

  • $out-------将管道中的文档写入一个新集合


mongodb 查询数组中包含某个值 sql mongodb 获取数组元素_mongodb 输出数组字段_09