mongoDB本地windows安装和初始化

官网:https://www.mongodb.com/

个人选择社区版

下载

直接下载

双击打开

选择自定义安装 custom

可以选择一个新建的目录,不要包含中文


这里安装mongoDB官方可视化工具,可以不要,navicat之类的其他也可以连接。这是MongoDB官方提供的一款GUI工具

任务管理器

默认安装目录

如果需要调整这些值,则可以在编辑安装目录中的bin\mongod.cfg文件后,重启数据库使其生效。

为了更好地使用数据库,可以继续创建对应的数据库、用户,并设置自己的密码,在接入MongoDB的shell窗口中执行以下命令:

sql 复制代码
db = db.getSiblingDB("admin")  // 切换到 admin 数据库
db.createUser({  // 创建一个新用户
    user: 'admin',     // 用户名
    pwd: 'asd123456',    // 密码
    roles: [   // 分配给用户的角色数组
        {role: 'clusterAdmin', db: 'admin'},    // 集群管理权限
        {role: 'dbAdminAnyDatabase', db: 'admin'},  // 所有数据库的管理权限
        {role: 'userAdminAnyDatabase', db: 'admin'},  // 所有数据库的用户管理权限
        {role: 'readWriteAnyDatabase', db: 'admin'}  // 所有数据库的读写权限
    ]
})

这段代码是用于在 MongoDB 中创建一个具有广泛权限的管理员用户。让我逐行解释它的含义:

javascript 复制代码
db = db.getSiblingDB("admin")  // 切换到 admin 数据库

这行代码将当前数据库上下文切换到 admin 数据库。admin 数据库是 MongoDB 的系统数据库,用于存储用户身份验证和授权信息。

javascript 复制代码
db.createUser({  // 创建一个新用户
    user: 'admin',              // 用户名
    pwd: 'asd123456',           // 密码
    roles: [                    // 分配给用户的角色数组
        {role: 'clusterAdmin', db: 'admin'},               // 集群管理权限
        {role: 'dbAdminAnyDatabase', db: 'admin'},         // 所有数据库的管理权限
        {role: 'userAdminAnyDatabase', db: 'admin'},       // 所有数据库的用户管理权限
        {role: 'readWriteAnyDatabase', db: 'admin'}        // 所有数据库的读写权限
    ]
})

这个用户被授予的权限包括:

  1. clusterAdmin - 集群管理权限:

    • 可以管理整个 MongoDB 集群(分片、副本集等)
    • 可以执行集群范围内的操作
  2. dbAdminAnyDatabase - 所有数据库的管理权限:

    • 可以在所有数据库上执行管理任务
    • 可以运行统计命令、索引管理等
  3. userAdminAnyDatabase - 所有数据库的用户管理权限:

    • 可以在所有数据库上创建和管理用户
    • 可以分配和撤销用户权限
  4. readWriteAnyDatabase - 所有数据库的读写权限:

    • 可以在所有数据库上读取和写入数据
    • 可以执行查询、插入、更新和删除操作

重要说明:

  • 这个用户拥有非常广泛的权限,几乎可以执行 MongoDB 中的任何操作
  • 这种高权限用户应该只在必要时创建,并且密码应该更复杂('asd123456' 是一个弱密码)
  • 在生产环境中,应该遵循最小权限原则,只授予用户完成其任务所必需的最低权限

使用场景:

这段代码通常在初始设置 MongoDB 时执行,创建一个超级管理员账户,用于后续管理数据库和其他用户。要执行这段代码,您需要:

  1. 先以无认证模式启动 MongoDB
  2. 连接到 MongoDB
  3. 在 admin 数据库中执行这段代码
  4. 然后重新以认证模式启动 MongoDB,使用这个账户进行管理

创建用户后,您可以使用以下命令验证登录:

javascript 复制代码
db.auth('admin', 'asd123456')

MongoDB 数据库基本操作指南

下面我将详细介绍如何在 MongoDB 中新建数据库、集合(相当于表),以及如何进行数据的增删改查操作。

1. 连接 MongoDB

首先,确保 MongoDB 服务已启动,然后打开命令行工具连接:

bash 复制代码
# 使用 mongo shell 连接(旧版本)
mongo

# 或使用 mongosh 连接(新版本)
mongosh

2. 新建/切换数据库

javascript 复制代码
// 使用 use 命令切换或创建数据库
// 如果数据库不存在,MongoDB 会在第一次插入数据时创建它
use mydatabase

3. 创建集合(表)并插入数据

插入单条文档(记录)

javascript 复制代码
// 向 users 集合插入一条文档
// 如果集合不存在,会自动创建
db.users.insertOne({
  name: "张三",
  age: 25,
  email: "zhangsan@example.com",
  created_at: new Date()
})

插入多条文档

javascript 复制代码
// 向 users 集合插入多条文档
db.users.insertMany([
  {
    name: "李四",
    age: 30,
    email: "lisi@example.com",
    created_at: new Date()
  },
  {
    name: "王五",
    age: 28,
    email: "wangwu@example.com",
    created_at: new Date()
  }
])

4. 查询数据

查询所有文档

javascript 复制代码
// 查询 users 集合中的所有文档
db.users.find()

带条件查询

javascript 复制代码
// 查询年龄等于25的用户
db.users.find({ age: 25 })

// 查询年龄大于25的用户
db.users.find({ age: { $gt: 25 } })

// 查询名字为"张三"的用户
db.users.find({ name: "张三" })

// 查询年龄在25到30之间的用户
db.users.find({ age: { $gte: 25, $lte: 30 } })

美化输出格式

javascript 复制代码
// 使用 pretty() 方法使输出更易读
db.users.find().pretty()

5. 更新数据

更新单条文档

javascript 复制代码
// 将名为"张三"的用户年龄更新为26
db.users.updateOne(
  { name: "张三" },
  { $set: { age: 26 } }
)

更新多条文档

javascript 复制代码
// 将所有用户的 status 字段设置为"active"
db.users.updateMany(
  {},
  { $set: { status: "active" } }
)

替换整个文档

javascript 复制代码
// 替换名为"李四"的整个文档
db.users.replaceOne(
  { name: "李四" },
  {
    name: "李四",
    age: 32,
    email: "new_lisi@example.com",
    status: "inactive",
    updated_at: new Date()
  }
)

6. 删除数据

删除单条文档

javascript 复制代码
// 删除名为"王五"的用户
db.users.deleteOne({ name: "王五" })

删除多条文档

javascript 复制代码
// 删除所有状态为"inactive"的用户
db.users.deleteMany({ status: "inactive" })

删除整个集合

javascript 复制代码
// 删除 users 集合(包括所有文档)
db.users.drop()

删除整个数据库

javascript 复制代码
// 切换到要删除的数据库
use mydatabase

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

7. 完整示例

javascript 复制代码
// 1. 创建/切换到新数据库
use company

// 2. 插入员工数据
db.employees.insertMany([
  { name: "Alice", department: "IT", salary: 5000 },
  { name: "Bob", department: "HR", salary: 4500 },
  { name: "Charlie", department: "IT", salary: 5500 }
])

// 3. 查询所有IT部门员工
db.employees.find({ department: "IT" })

// 4. 给所有员工加薪10%
db.employees.updateMany(
  {},
  { $mul: { salary: 1.1 } }
)

// 5. 删除薪资低于5000的员工
db.employees.deleteMany({ salary: { $lt: 5000 } })

// 6. 查看最终结果
db.employees.find().pretty()

注意事项:

  1. MongoDB 是区分大小写的,db.users.find()db.Users.find() 指向不同的集合
  2. 使用 $set 操作符只更新指定字段,不会影响其他字段
  3. 删除操作是不可逆的,请谨慎执行
  4. 在生产环境中,重要操作前最好先备份数据

这些是 MongoDB 的基本操作,掌握了这些就可以开始使用 MongoDB 进行数据管理了。随着使用深入,您可以进一步学习索引、聚合管道、事务等高级功能。

相关推荐
The Sheep 202321 小时前
MongoDB与.Net6
数据库·mongodb
点灯小铭1 天前
基于单片机的智能收银机模拟系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业
数据知道1 天前
一文掌握 MongoDB 存储引擎 WiredTiger 的原理
数据库·mongodb·数据库架构
清风6666662 天前
基于单片机的电加热炉智能温度与液位PID控制系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业
列御寇2 天前
MongoDB分片集概述
数据库·mongodb
列御寇2 天前
MongoDB分片集群——集群组件概述
数据库·mongodb
列御寇2 天前
MongoDB分片集群——mongos组件(mongos进程)
数据库·mongodb
列御寇2 天前
MongoDB分片集群分片模式——哈希分片(Hashed Sharding)
数据库·mongodb·哈希算法
列御寇2 天前
MongoDB分片集群——分片键(Shard Keys)概述
数据库·mongodb
橘橙黄又青4 天前
mongodb的基本命令
数据库·mongodb