# MongoDB 常用指令

## 基础命令
### 启动与连接
```bash
# 启动 MongoDB 服务
mongod

# 连接 MongoDB 客户端
mongo
```

### 数据库操作
```bash
# 查看当前使用的数据库
db

# 列出所有数据库
show dbs

# 切换或创建数据库
use <database_name>

# 删除当前数据库
db.dropDatabase()
```

## 集合操作
```bash
# 查看当前数据库的所有集合
show collections

# 创建集合
db.createCollection("<collection_name>")

# 删除集合
db.<collection_name>.drop()
```

## 文档操作
### 插入
```bash
# 插入单个文档
db.<collection_name>.insertOne({<field1>: <value1>, <field2>: <value2>})

# 插入多个文档
db.<collection_name>.insertMany([
{<field1>: <value1>, <field2>: <value2>},
{<field1>: <value1>, <field2>: <value2>}
])
```

### 查询
```bash
# 查询所有文档
db.<collection_name>.find()

# 格式化输出查询结果
db.<collection_name>.find().pretty()

# 查询单个文档
db.<collection_name>.findOne({<field>: <value>})

# 条件查询
db.<collection_name>.find({<field>: <value>})

# 使用逻辑运算符查询
db.<collection_name>.find({
$or: [
{<field1>: <value1>},
{<field2>: <value2>}
]
})

# 查询嵌套字段
db.<collection_name>.find({"<embedded_field>.<sub_field>": <value>})
```

### 更新
```bash
# 更新单个文档
db.<collection_name>.updateOne(
{<query_field>: <query_value>},
{$set: {<field_to_update>: <new_value>}}
)

# 更新多个文档
db.<collection_name>.updateMany(
{<query_field>: <query_value>},
{$set: {<field_to_update>: <new_value>}}
)

# 替换文档
db.<collection_name>.replaceOne(
{<query_field>: <query_value>},
{<new_document>}
)
```

### 删除
```bash
# 删除单个文档
db.<collection_name>.deleteOne({<field>: <value>})

# 删除多个文档
db.<collection_name>.deleteMany({<field>: <value>})

# 删除所有文档
db.<collection_name>.deleteMany({})
```

## 索引操作
```bash
# 创建索引
db.<collection_name>.createIndex({<field>: 1})

# 查看所有索引
db.<collection_name>.getIndexes()

# 删除索引
db.<collection_name>.dropIndex("<index_name>")
```

## 聚合操作
```bash
# 使用聚合管道
db.<collection_name>.aggregate([
{$match: {<field>: <value>}},
{$group: {_id: "$<group_field>", total: {$sum: "$<field_to_sum>"}}}
])
```

## 用户与权限
```bash
# 创建用户
db.createUser({
user: "<username>",
pwd: "<password>",
roles: [
{role: "<role>", db: "<database_name>"}
]
})

# 查看用户
db.getUsers()

# 删除用户
db.dropUser("<username>")
```

## 备份与恢复
```bash
# 导出数据库
mongodump --db <database_name> --out <backup_path>

# 导入数据库
mongorestore --db <database_name> <backup_path>/<database_name>
```

## 性能与监控
```bash
# 查看当前操作
db.currentOp()

# 查看数据库状态
db.stats()

# 查看集合状态
db.<collection_name>.stats()

# 分析查询性能
db.<collection_name>.find(<query>).explain("executionStats")
```

## 其他
```bash
# 清空集合
db.<collection_name>.deleteMany({})

# 计数文档数量
db.<collection_name>.countDocuments({})

# 获取数据库信息
db.serverStatus()

MongoDB 常用指令(详细)的更多相关文章

  1. MongoDB常用指令

    db 查看当前操作的数据库 show dbs 显示所有数据库 show collections 显示当前数据库下的所有集合 use database_name 连接到一个名叫[database_nam ...

  2. redis基础:redis下载安装与配置,redis数据类型使用,redis常用指令,jedis使用,RDB和AOF持久化

    知识点梳理 课堂讲义 课程计划 1. REDIS 入 门 (了解) (操作)   2. 数据类型 (重点) (操作) (理解) 3. 常用指令   (操作)   4. Jedis (重点) (操作) ...

  3. linux常用指令

    整理下来的linux常用指令 mount [-t 文件系统] 设备文件名 挂载点挂载命令,一般用于在挂载ISO,或者其他比如U盘等设备时使用,[-t iso9660]为固定格式,可写可不写,非必写项. ...

  4. 走进AngularJs(二) ng模板中常用指令的使用方式

    通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的.ng的模板真是让我爱不释手.学习ng道路还很漫长,从模板 ...

  5. mac 终端 常用指令

    开始正式研究ios 应用开发,由于是从C开始学起,所以学习下常用的mac终端指令,方便后续常用操作. mac 终端 常用指令: 1.ls指令 用途:列出文件 常用参数 -w 以简洁的形式列出所有文件和 ...

  6. linux下svn常用指令

    windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的 ...

  7. [转载]linux下svn常用指令

    一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...

  8. 基于header的一些常用指令详解

     header常用指令 header分为三部分: 第一部分为HTTP协议的版本(HTTP-Version): 第二部分为状态代码(Status): 第三部分为原因短语(Reason-Phrase) ...

  9. git/github常用指令、入门

    git的基本常用指令: 1.cd:切换路径 2.mkdir:进入文件夹目录 3.pwd:显示当前目录的路径 4.git init:把当前的目录变成可以管理的git仓库,生成隐藏.git文件 5.git ...

  10. 第一节. .Net Core环境的安装和常用指令

    一. 环境介绍和安装 1. 环境介绍 .Net FrameWork框架:BCL(基础类库 system.dll).CLR(运行时 仅支持:Windows).FCL(一些框架,比如:MVC.WPF) . ...

随机推荐

  1. Mysql高可用架构方案

    目录 Mysql 介绍 高可用结构 主从模式 主从模式介绍 主从复制技术 主从模式注意事项 MHA(MasterHighAvailability) MHA模式介绍 MHA工作流程 MMM(Multi- ...

  2. 【原创】PREEMPT-RT 系统cpu使用率周期CPU飙高问题

    PREEMPT-RT 系统cpu使用率周期CPU飙高问题 目录 PREEMPT-RT 系统cpu使用率周期CPU飙高问题 背景 现象 复现条件 原因 解决措施 背景 在22年进行PREEMPT-RT系 ...

  3. 本地环境搭建Virtualbox+Vagrant

    环境准备 virtualbox是免费,不必要费劲去找破解,下载就可以用. 使用virtualbox每次安装虚拟机,需要你去下载iso,然后设置虚拟机硬件配置,使用iso创建虚拟器.一系列的手工操作,如 ...

  4. kettle 使用 CARTE 执行

    在执行KETTLE 任务的时候,可以使用本地执行,或者使用carte server执行. 1.启动carte server .\Carte.bat localhost 8080 2.配置子服务器 这里 ...

  5. less 动态样式语言

    1.less的介绍 Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展 官方文档 2.less需要编译才能被浏览器解析 浏览器 ...

  6. JavaScript ES6基础

    1.let声明 1.let不像var有变量声明提升,未声明直接使用会报错 console.log(a); //undefined var a; console.log(b); //报错 let b; ...

  7. 【C#基础】Dynamic类型和正确用法

    前言 Dynamic类型是C#4.0中引入的新类型,它允许其操作掠过编译器类型检查,而在运行时处理. 编程语言有时可以划分为静态类型化语言和动态类型化语言.C#和Java经常被认为是静态化类型的语言, ...

  8. This request has been blocked; the content must be served over HTTPS.此请求已被阻止;内容必须通过HTTPS提供

    近期在做将高德地图替换为天地图时遇到了这个问题,原因是https由于安全协议禁止了http的请求 http://api.tianditu.gov.cn/api?v=4.0&tk=XXXXXXX ...

  9. 《前端运维》五、k8s--4机密信息存储与统一管理服务环境变量

    一.储存机密信息 Secret 是 Kubernetes 内的一种资源类型,可以用它来存放一些机密信息(密码,token,密钥等).信息被存入后,我们可以使用挂载卷的方式挂载进我们的 Pod 内.当然 ...

  10. 一比一还原axios源码(七)—— 取消功能

    按照惯例,我们先来看下官方的例子: 你可以通过axios的CancelToken工厂函数,生成一个source,然后把这个对象作为参数传递给axios,最后,需要取消的时候调用source的cance ...