MongoDB基本操作


MongoDB 基本操作

一、数据库操作

创建 - 使用 use 创建数据库

  • 使用 use DATABASE_NAME 来创建数据库
  • 示例:
> use test
switched to db test
> db
test
>

查看 - 查看所有数据库

  • 使用 show dbs 命令查看所有数据库

删除 - 使用 dropDatabase 删除数据库

  • 使用 db.dropDatabase() 来删除数据库
  • 数据相应文件也会被删除,磁盘空间被释放

二、集合操作

创建 - 使用 createCollection 创建集合

  • 语法格式:db.createCollection(name, options)
  • name: 要创建的集合名称
  • options: 可选参数, 指定有关内存大小及索引的选项
  • options 可以是以下参数:
    字段 类型 描述
    capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。
    autoIndexId 布尔 3.2 之后不再支持该参数。(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
    size 数值 (可选)为固定集合指定一个最大值,即字节数。如果 capped 为 true,也需要指定该字段。
    max 数值 (可选)指定固定集合中包含文档的最大数量。

查询 - 查询数据库中的集合

  • 查询语句:show collections / show tables

重命名 - 使用 renameCollection 重命名集合

  • 语法格式:db.COLLECTION_NAME.renameCollection(“NEW_NAME”)

删除 - 使用 drop 删除集合

  • 使用 **db.<集合>.drop()**来删除一个集合
  • 集合中的全部文档都会被删除
  • 集合相关的索引也会被删除
  • 示例:db.colToBeDropped.drop()

三、文档操作

插入 - 使用 insert 完成插入操作

操作格式:

  • db.<集合>.insertOne(<JSON 对象>)
  • db.<集合>.insertMany([<JSON 1>, <JSON 2>, <JSON 3>, …, ])

示例:

db.fruit.insertOne({name: "apple"})
db.fruit.insertMany([
    {name: "apple"},
  {name: "pear"},
  {name: "orange"}
])

查询 - 使用 find 查询文档

  • 关于 find:
    • find 是 MongoDB 中查询数据的基本指令,相当于 SQL 中的 SELECT。
    • find 返回的是游标
  • find 示例:
db.movies.find({"year": 1975}) // 单条件查询
db.movies.find({"year": 1989, "title": "Batman"}) // 多条件and查询
db.movies.find({$and: [{"title": "Batman"}, {"category": "action"}]})  // and的另一种形式
db.movies.find({$or: [{"year": 1989}, {"title": "Beaman"}]}) // 多条件or查询
db.movies.find({"title": /^B/}}) // 按正则表达式查找
  • 查询条件对照表

    SQL MQL
    a = 1 {a: 1}
    a <> 1 {a: {$ne: 1}}
    a > 1 {a: {$gt: 1}}
    a >= 1 {a: {$gte: 1}}
    a < 1 {a: {$lt: 1}}
    a <= 1 {a: {$lte: 1}}
    a = 1 AND b = 1 {a: 1, b: 1}或{$and: [{a: 1}, {b: 1}]}
    a = 1 OR b = 1 {$or: [{a: 1}, {b: 1}]}
    a IS NULL {a: {$exists: false}}
    a IN (1, 2, 3) {a: {$in: [1, 2, 3]}}
  • 查询逻辑运算符

    • $lt:存在并小于
    • $lte:存在并小于等于
    • $gt:存在并大于
    • $gte:存在并小于等于
    • $ne:不存在或存在但不等于
    • $in:存在并在指定数组中
    • $nin:不存在或不在指定数组中
    • $or:匹配两个或多个条件中的一个
    • $and:匹配全部条件
  • 使用 find 搜索子文档

    • db.fruit.find({“from.country”: “China”}) // ✔️ 正确
    • db.fruit.find({“from”: {country: “China”}}) // ❎ 错误
  • 控制 find 返回的字段

    • find 可以指定只返回指定的字段
    • _id 字段必须明确指明不返回,否则默认返回
    • 在 MongoDB 中我们称这为投影(projection)
    • db.movies.find({“category”: “action”}, {“_id”, 0, title: 1}) // 不返回_id,返回 title

删除 - 使用 remove 删除文档

  • remove 命令需要配合查询条件使用
  • 匹配查询条件的文档会被删除
  • 指定一个空条件会删除所有文档
  • 示例:
db.testcol.remove({a: 1}) // 删除a等于1的记录
db.testcol.remove({a: {$lt: 5}}) // 删除a小于5的记录
db.testcol.remove({}) // 删除所有记录
db.testcol.remove() // 报错

更新 - 使用 update 更新文档

  • Update 操作执行格式:db.<集合>.update(<查询条件>, <更新字段>)
  • 示例:
// 查询 name 为 apple的记录,并将找到记录的 from 设置为 China
db.fruit.updateOne({name: "apple"}, {$set: {from: "China"}})
  • 使用 updateOne 表示无论条件匹配多少条记录,默认更新第一条
  • 使用 updateMany 表示条件匹配多少条就更新多少条
  • updateOne/updateMany 方法要求更新条件部分必须具有以下条件之一,否则将报错:
    • $set/$unset
    • $push/pushAll/$pop
    • $pull/$pullAll
    • $addToSet
  • 操作条件
    操作条件 解释
    $push 增加一个对象到数组底部
    $pushAll 增加多个对象到数组底部
    $pop 从数组底部删除一个对象
    $pull 如果匹配指定的值,从数组中相应的对象
    $pullAll 如果匹配任意的值,从数组中相应的对象
    $addToSet 如果不存在则增加一个值到数组

文章作者: Truda
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Truda !
评论
  目录