# 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. Nuxt.js 应用中的 listen 事件钩子详解

    title: Nuxt.js 应用中的 listen 事件钩子详解 date: 2024/11/9 updated: 2024/11/9 author: cmdragon excerpt: 它为开发者 ...

  2. Navicat Premium 16下载与安装

    1.可以通过以下两种方式下载 a.官网下载地址 https://www.navicat.com.cn/download/navicat-premium b.百度网盘下载地址 链接:https://pa ...

  3. 2024-11-20:交替子数组计数。用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组。 请返回数组 nums 中交替子数组的总数。 输

    2024-11-20:交替子数组计数.用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组. 请返回数组 nums 中交替子数组的总数. 输 ...

  4. influxdb group by(1d) 查询注意事项

    转载请注明出处: 在 InfluxDB 中,默认的时区是 UTC(协调世界时).所有的时间戳在数据写入时默认视为 UTC.这意味着如果没有在插入数据时指定其他时区,InfluxDB 会将所有时间数据处 ...

  5. Dockerfile轻松打包jar包生成docker

    1. 创建java目录 mkdir /home/java/ cd /home/java/ 2. 创建Dockerfile #FROM openjdk:8-jdk-alpine #ADD *.jar a ...

  6. 在 MySQL 创造类似 PipelineDB 的流视图(continuous view)

    公司的系统采用的是 Google Cloud SQL 提供的 MySQL 数据库,由于历史原因,数据库成本极高,需要对它进行优化缩减成本. 相比 PostgresSQL,MySQL 主要缺少以下特性, ...

  7. 【Vue】Vue脚手架安装搭建

    ## Vue脚手架安装搭建 操作系统:Windows 11 专业工作站 记录时间:2022年2月18日 在安装之前,需要安装node.js(Node.js (nodejs.org)),否则无法使用np ...

  8. IntelliJ IDEA 导入项目后出现非法字符解决方法

    1.Ctrl+Alt+S进入设置页面如图,更改为UTF-8 2.Ctrl+Alt+S进入设置页面如图,在箭头所指的位置填上 -encoding UTF8 3.清除文件中的BOM特殊不可见字符 选择项目 ...

  9. 转载 Python 存储与读取HDF5文件

    HDF5 简介 HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件.HDF 最早由美国国家超级计算应用中心 NCSA 开发,目前在非盈 ...

  10. Qt/C++入门基础学习001-绘图基础

    这一节介绍 Qt 的绘图基础知识,我们都知道,Qt 里绘图使用的是 QPainter,但是首先需要弄明白:在什么上绘图和在哪里绘图,然后才是怎么绘图,我们就围绕这几个问题来展开. 在什么上绘图 The ...