MongoDB笔记(未完待续)

一.数据库操作

数据库操作指 令
创建数据库use 数据库名
查看当前数据库db
查看所有数据库show dbs
删除数据库db.dropDatabase()

二.集合操作

集合操作指 令
创建集合db.createCollection(“集合名”)
删除集合db.集合名.drop()
获取所有集合show collection

三.基本的增删查改

1.存入数据

   db.集合名称.insert(条件)

如下

  // 插入单个文档
   db.students.insertOne({name: 'Eve', age: 28})  
   //students是集合名

  // 插入多个文档 
   db.students.insertMany(
	{name: 'Frank', age: 32},
	{name: 'Grace', age: 27}
		)

2.删除数据

 db.集合名称.remove(条件)

例如,删除 students 集合中年龄为 20 的一条文档:

db.students.deleteOne({ age: 20 });

例如,删除 students 集合中年龄大于 18 的所有文档:

db.students.deleteMany({ age: { $gt: 18 } });

3.更新数据

 db.集合名称.updata(条件)

示例将把 name 为 “Alice” 的文档中的 age 字段更新为 25:

db.users.updateOne(  
   { name: "Alice" },  // 查询条件  
   { $set: { age: 25 } }  // 更新内容  
)

示例将把所有 status 为 “active” 的文档中的 lastLogin 字段更新为当前日期:

db.users.updateMany(  
   { status: "active" },  // 查询条件  
   { $set: { lastLogin: new Date() } }  // 更新内容  
)
更新运算符

MongoDB 提供了多种更新操作符,用于指定更新的方式。常用的更新操作符:

名称描述
$set设置文档中字段的值。
$inc将字段的值增加指定的数量。
$min仅当指定值小于现有字段值时才更新该字段。
$max仅当指定值大于现有字段值时才更新该字段。
$mul将字段的值乘以指定的数量。
$rename重命名字段。
$unset从文档中删除指定的字段。
$currentDate将字段的值设置为当前日期(日期或时间戳)。

4.查询数据

 db.集合名称.find(条件)

find函数操作符

比较操作符:
$eq(等于):用于查找等于指定值的文档。							例如 {field: {$eq: value}}。
$ne(不等于):查找不等于指定值的文档。							例如 {field: {$ne: value}}。
$gt(大于):查找字段值大于指定值的文档。							例如 {field: {$gt: value}}。
$gte(大于等于):查找字段值大于或等于指定值的文档。				例如 {field: {$gte: value}}。
$lt(小于):查找字段值小于指定值的文档。							例如 {field: {$lt: value}}。
$lte(小于等于):查找字段值小于或等于指定值的文档。				例如 {field: {$lte: value}}。
逻辑操作符:
$and:用于组合多个条件,只有当所有条件都满足时才返回文档。			例如 {$and: [{condition1}, {condition2}]}。
$or:组合多个条件,只要其中一个条件满足就返回文档。					例如 {$or: [{condition1}, {condition2}]}。
$not:对一个条件取反。											例如 {field: {$not: {condition}}}。
元素操作符:
$exists:检查字段是否存在。										例如 {field: {$exists: true}} 表示查找存在该字段的文档,
																例如 {field: {$exists: false}} 查找不存在该字段的文档。
数组操作符:
$in:查找字段值在指定数组中的文档。								例如 {field: {$in: [value1, value2]}}。
$nin:查找字段值不在指定数组中的文档。								例如 {field: {$nin: [value1, value2]}}。
$all:用于数组字段,要求文档中的数组字段包含指定数组中的所有元素。	例如 {arrayField: {$all: [element1, element2]}}。
正则表达式操作符:
$regex:使用正则表达式进行模式匹配查询。							例如 {field: {$regex: /pattern/}}
1. 查询所有文档
db.collection.find()
//或者
db.collection.find({})
2.条件查询

查询 age 字段值为 25 的文档 :

db.users.find({ age: 25 })

查询 age 字段值在 20 到 30 之间(不包括 30)的文档:

db.users.find({ age: { $gt: 20, $lt: 30 } })

四.聚合和管道

注意:
1.容易报错的点

db.集合名.aggregate([  ])   用中括号 而之前用的大括号
聚合表达式
表达式描述
$sum计算求和
$avg计算平均值
$min获取集合文档中的最小值
$max获取集合文档中的最大值
$push将指定字段的值添加到一个数组中
$addToSet将指定字段的值添加到一个集合中,确保集合中不包含重复值
$first根据资源文档的排序获取第一个文档数据
$last根据资源文档的排序获取最后一个文档数据

在这里插入图片描述

聚合框架中的管道操作
表达式描述
$group将集合中的文档进行分组,便于后续统计结果
$limit用于限制MongoDB聚合管道返回的文档数
$match用于过滤数据,只输出符合条件的文档
$sort将输入的文档先进行排序,再输出
$project用于修改输入文档的结构(增加、删除字段等)和名称
$skip在聚合管道中跳过指定数量的文档,并返回剩余的文档

在这里插入图片描述

聚合管道之$count的概述

计数并返回与查询匹配的结果数。

1)、$ match阶段筛选出type匹配technology的文档,并传到下一阶段;
(2)、$ count阶段返回聚合管道中剩余文档的计数,并将该值分配给type_count
db.books.aggregate([ {$match:{type:"technology"}}, {$count: "type_count"} ])

例题(1)操作goods,找到价格在10到100的人民文学出版社出版的图书(match实现)

db.goods.aggregate([
  {
    $match: {
      price: { $gte: 10, $lte: 100 },
      publish: '人民文学出版社'
    }
  }
]);

五.索引

声明
同步上课笔记
后续更新,方便复习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值