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 进行数据管理了。随着使用深入,您可以进一步学习索引、聚合管道、事务等高级功能。

相关推荐
jianqiang.xue19 小时前
ESP32-S3 运行 Linux 全指南:从 RISC-V 模拟器移植到 8 秒快速启动
linux·stm32·单片机·mongodb·risc-v·esp32s3
知识分享小能手1 天前
MongoDB入门学习教程,从入门到精通,MongoDB 知识点详解(1)
数据库·学习·mongodb
爬山算法3 天前
MongoDB(52)如何配置分片?
数据库·mongodb
2401_858936884 天前
51 单片机核心知识点:GPIO、中断、定时器与蜂鸣器驱动
单片机·mongodb·nosql
爬山算法4 天前
MongoDB(50)副本集中的角色有哪些?
数据库·mongodb
Predestination王瀞潞5 天前
4.1.1 存储->数据库:MongoDB
数据库·mongodb
૮・ﻌ・6 天前
Node.js - 04:MongoDB、会话控制
数据库·mongodb·node.js·jwt·token·cookie·session
七夜zippoe6 天前
MongoDB聚合框架与性能优化实战指南
数据库·python·mongodb·性能优化·聚合框架
数据知道7 天前
《深入掌握MongoDB数据库》 - 专栏介绍和目录
网络·数据库·mongodb
暖阳常伴7 天前
Windows安装MongoDB
数据库·windows·mongodb