# 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. 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现二

    一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...

  2. Gitlab的基本操作

    Gitlab的基本操作 Gitlab添加组 添加组建组有多个项目分支,可以将开发添加到组里面进行设置权限, 不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的 ...

  3. Surface pro 11二合一平板参数调研

    最近研究了下Surface pro 11,记录下相关参数,矩阵我以表格列出来.可能不够细,大家作个参考吧 模块 技术项 参数 备注 处理器 型号 Snapdragon X Elite(X1E-80-1 ...

  4. CF2030E MEXimize the Score 题解

    题面 假设我们将数组 \(b\) 中的元素分割成任意多个 \(k\) 的非空多集 \(S_1, S_2, \ldots, S_k\) ,其中 \(k\) 是一个任意的正整数.定义 \(b\) 的分值为 ...

  5. Clickhouse之集群操作

    查看集群: 在任意一台机上,使用 /usr/bin/clickhouse-client --host localhost --port 9000 连接本地服务器 select * from `syst ...

  6. nginx之访问控制

    Nginx的源码提供了ngx_http_auth_basic_module这个模块,它可以来解决web访问认证的问题.这个模块是默认就编译进nginx的,可以直接拿来使用. ngx_http_auth ...

  7. 【多线程】Java并发中的锁(草稿)

    可重入锁Synchronized 1 public class DemoTest { 2 public static void main(String[] args) { 3 final DemoTe ...

  8. 全网最详细的Spring入门教程

    为什么用Spring 什么是Spring Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性. Spring的一个最大的目的就是使JAVA EE开发更加 ...

  9. manim边做边学--淡入淡出

    本篇介绍Manim中的淡入和淡出动画效果. 淡入FadeIn 主要用于让对象以渐变的方式在场景中显现. 它的特点是视觉上柔和过渡,能自然地引导观众注意新出现的元素. 淡出FadeOut 则是使对象逐渐 ...

  10. 【Amadeus原创】word图片隐藏在文字里了的终极解决办法

    终极解决方案: 点击该图片,然后,选择正文,即可.