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

相关推荐
开着拖拉机回家15 小时前
【MongoDB】mongoDB数据迁移
数据库·mongodb·nosql·数据库迁移·mongodump·mongorestore
木木子999916 小时前
MongoDB Integer
数据库·mongodb
XiaoMu_0011 天前
MySQL、PostgreSQL、MongoDB和Redis全面对比
mysql·mongodb·postgresql
深耕AI1 天前
【12/20】数据库高级查询:MongoDB 聚合管道在用户数据分析中的应用,实现报告生成
数据库·mongodb·数据分析
深耕AI1 天前
【6/20】MongoDB 入门:连接数据库,实现数据存储与查询
数据库·mongodb
点灯小铭1 天前
基于51单片机水塔水箱液水位WIFI监控报警设计
单片机·嵌入式硬件·mongodb·毕业设计·51单片机·课程设计
深蓝电商API1 天前
爬虫数据存储:MongoDB 在电商采集中的应用
数据库·爬虫·mongodb
cdcdhj1 天前
在window中创建第2个mongodb数据的方法
数据库·mongodb
疯狂大嘴1 天前
MongoDB备份数据库
数据库·mongodb