目录

  1. 1. 前言
  2. 2. 安装
  3. 3. 概念
  4. 4. 连接
  5. 5. 语法
    1. 5.1. 数据库操作
    2. 5.2. 集合操作
    3. 5.3. 增删查改
    4. 5.4. 条件操作符
      1. 5.4.1. 查询和投影操作符
      2. 5.4.2. 更新操作符
    5. 5.5. 聚合操作符
    6. 5.6. 字符串表达式

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

MongoDB

2024/5/9 Basic Sql
  |     |   总文章阅读量:

前言

参考:

https://www.runoob.com/mongodb/mongodb-tutorial.html

https://www.yuque.com/boogipop/ot88z5/zcq88ma6bgw6dmuw#vBsln

官方文档:https://www.mongodb.com/zh-cn/docs/manual/reference/


安装

数据库安装:https://www.mongodb.com/try/download/community

shell工具安装:https://www.mongodb.com/try/download/shell


概念

SQL 术语/概念 MongoDB 术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

连接

标准 URI 连接语法:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

语法

此事在Nosql注入中亦有记载…

数据库操作

创建数据库:use dbname,假如存在就是切换到目标,不存在就新建

查看所有数据库:show dbs

删除数据库:切换到目标数据库,然后db.dropDatabase()即可

集合操作

创建集合:db.createCollection(),db代表当前选中数据库

创建集合的时候可以初始化一些数据:db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 })

删除集合:db.<collectioname>.drop

列出所有集合:show collections/show tables

增删查改

增加数据:

db.<collectionname>.insertOne({key:value,key:value})
db.<collectionname>.save({key:value,key:value})

插入多条数据:

db.users.insertMany([
  { name: "Alice", age: 25, email: "alice@example.com" },
  { name: "Bob", age: 30, email: "bob@example.com" },
  { name: "Charlie", age: 35, email: "charlie@example.com" }
])

删除语句:

单条删除:db.users.deleteOne({ name: "Alice" })
多条删除:db.users.deleteMany({ age: { $lt: 30 } })

修改数据:

单条:db.users.updateOne({ name: "Alice" }, { $set: { age: 26 } })
多条:db.users.updateMany({ age: { $lt: 30 } }, { $set: { status: "active" } })

例如,要替换users集合中name字段为Bob的第一个文档,可以使用:(后面是修改的数据)

db.users.replaceOne({ name: "Bob" }, { name: "Bob", age: 31, email: "bob@example.com" })

查询语句:

db.<collectionname>.find() # 查询所有
db.users.find({ name: "Alice" }, { name: 1, age: 1 })	# 条件查询往里面加语句
db.users.findOne({ name: "Alice" })	# 限制单条条件查询,只返回一个数据
db.users.findOne({ name: "Alice" }, { name: 1, age: 1 })	# 使用name和age字段指定了一个投影,该投影将仅返回具有name和age字段的文档

条件操作符

查询和投影操作符

比较查询

$eq
$gt
$gte
$in
$lt
$lte
$ne
$nin

逻辑查询

$and
$not
$nor
$or

元素查询

$exists
$type

评估查询

$expr
$jsonSchema
$mod
$regex
$text
$where

数组查询

$all
$elemMatch
$size

按位查询

$bitsAllClear
$bitsAllet
$bitsAnyClear
$bitsAnySet

投影操作

$
$elemMatch
$slice

其他

$comment
$rand
$natural

更新操作符

字段更新

$currentDate
$inc
$min
$max
$mul
$rename
$set
$setOnInsert
$unset

数组更新

$
$[]
$[<identifier>]
$addToSet
$pop
$pull
$push
$pullAll
$each
$position
$slice
$sort

按位更新

$bit

聚合操作符

这个太多了,直接看文档吧:https://www.mongodb.com/zh-cn/docs/manual/reference/operator/aggregation

字符串表达式

名称 说明
$concat 连接任意数量的字符串。
$dateFromString 将日期/时间字符串转换为日期对象。
$dateToString 以格式化字符串的形式返回日期。
$indexOfBytes 搜索字符串中出现的子字符串,并返回首次出现的 UTF-8 字节索引。如果未找到该子字符串,则返回 -1
$indexOfCP 在字符串中搜索子字符串的出现位置,并返回第一次出现时的 UTF-8 码位索引。如果未找到子字符串,则返回 -1
$ltrim 删除字符串开头和结尾的空白或指定字符。版本 4.0 中的新增功能.
$regexFind 将正则表达式应用于字符串,并返回第一个匹配子字符串的信息。
$regexFindAll 将正则表达式 (regex) 应用于字符串,并返回有关所有匹配子字符串的信息。
$regexMatch 将正则表达式 (regex) 应用于字符串并返回一个布尔值,它可表示是否已找到匹配项。
$replaceOne 替换给定输入中匹配字符串的第一个实例。
$replaceAll 替换给定输入中匹配字符串的所有实例。
$rtrim 删除字符串结尾的空白或指定字符。
$split 根据分隔符将字符串拆分为子字符串。返回子字符串数组。如果在字符串中找不到分隔符,则返回包含原始字符串的数组。
$strLenBytes 返回字符串中 UTF-8 编码的字节数。
$strLenCP 返回 UTF-8 代码点数
$strcasecmp 执行不区分大小写的字符串比较并返回:如果两个字符串相等,则返回 0;如果第一个字符串大于第二个字符串,则返回 1;如果第一个字符串小于第二个字符串,则返回 -1
$substr 已弃用。使用$substrBytes$substrCP
$substrBytes 返回字符串的子串。从字符串中指定的 UTF-8 字节索引(从零开始)处的字符开始,持续指定的字节数。
$substrCP 返回字符串的子字符串。从指定的 UTF-8 代码点 (CP)
$toLower 将字符串转换为小写。接受单个参数表达式。
$toString 将值转换为字符串。
$trim 删除字符串开头和结尾的空白或指定字符。
$toUpper 将字符串转换为大写。接受单个参数表达式。