以下是在 Windows 系统上安装 MongoDB 的详细步骤:
方法一:通过安装向导
-
下载安装包
- 访问官网下载页:https://www.mongodb.com/try/download/community
- 选择版本:
- Version:推荐最新稳定版(如
8.09
)。 - Platform:选择
Windows
。 - Package:选择
MSI
格式。
- Version:推荐最新稳定版(如
- 点击下载(DownLoad)。
-
运行安装向导
- 双击下载的
.msi
文件。 - 按提示操作,可自定义以下选项:
- 安装路径:默认是
C:\Program Files\MongoDB\Server\<版本>\
。 - 安装组件:勾选
Install MongoDB as a Service
(推荐以服务方式安装)。 - 数据目录:默认是
C:\data\db
(需手动创建目录或修改路径)。
- 安装路径:默认是
- 双击下载的
-
配置环境变量(可选)
- 将 MongoDB 的
bin
目录(如C:\Program Files\MongoDB\Server\7.0\bin
)添加到系统环境变量PATH
中,方便命令行调用。
- 将 MongoDB 的
-
验证安装
- 打开命令提示符(CMD),输入:
若显示版本信息,则安装成功。mongod --version mongo --version
- 打开命令提示符(CMD),输入:
建议避免使用包含空格的路径,如"Program Files",这可能导致程序运行异常。
方法二:通过压缩包(灵活安装)
-
下载 ZIP 包
- 在官网下载页选择
ZIP
格式包(如mongodb-windows-x86_64-7.0.zip
)。
- 在官网下载页选择
-
解压并配置
- 将 ZIP 解压到目标目录(如
D:\mongodb\
)。 - 创建数据存储目录(如
D:\mongodb\data\db
)。
- 将 ZIP 解压到目标目录(如
-
启动 MongoDB
- 打开 CMD,切换到 MongoDB 的
bin
目录:cd D:\mongodb\bin
- 启动服务(指定数据目录):
mongod --dbpath D:\mongodb\data\db
- 保持窗口运行,服务默认监听
27017
端口。
- 打开 CMD,切换到 MongoDB 的
-
连接测试
- 新开一个 CMD 窗口,运行:
进入 MongoDB Shell 即表示成功。mongo
- 新开一个 CMD 窗口,运行:
配置为系统服务(开机自启)
- 在 MongoDB 的
bin
目录下创建配置文件mongod.cfg
(内容如下):systemLog:destination: filepath: D:\mongodb\log\mongod.loglogAppend: true storage:dbPath: D:\mongodb\data\db net:port: 27017bindIp: 127.0.0.1
- 以管理员身份运行 CMD,执行:
mongod --config "D:\mongodb\bin\mongod.cfg" --install
- 启动服务:
net start MongoDB
常见问题
-
端口冲突
- 确保
27017
端口未被占用,或通过--port
指定其他端口。
- 确保
-
权限问题
- 以管理员身份运行 CMD,或为数据目录赋予写入权限。
-
连接失败
- 检查服务是否启动:
net start MongoDB
。
- 检查服务是否启动:
-
权限不足
- services Mongodb Server failed to start verify that you have sufficient privileges to start system services
- 右键 命令提示符(CMD) 或 PowerShell,选择 “以管理员身份运行”。
以下是排版优化后的 Markdown 内容,结构更清晰且符合技术文档规范:
-
无法启动
问题描述
Windows 无法启动 MongoDB 服务,报错1053
:
服务没有及时响应启动或控制请求
原因分析
权限不足、服务配置错误或启动超时可能导致此问题。
解决方案
方法 1:重新安装 MongoDB 服务
步骤:
-
以管理员身份运行 CMD,执行以下命令(替换实际路径):
mongod --remove mongod --install --dbpath="C:\data\db" --logpath="C:\data\log\mongod.log" --serviceName="MongoDB"
--dbpath
:数据存储目录(需提前创建,如C:\data\db
)--logpath
:日志文件路径(需确保目录存在且有写入权限)--serviceName
:服务名称(默认MongoDB
)
-
启动服务:
net start MongoDB
方法 2:调整服务启动超时时间
步骤:
- 打开注册表编辑器(
regedit
),导航至:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
- 新建
DWORD (32-bit)
,命名为ServicesPipeTimeout
,值设为60000
(单位:毫秒,即 60 秒)。 - 重启计算机后重试启动服务。
方法 3:检查权限配置
关键操作:
-
目录权限:
- 右键
C:\data\db
和C:\data\log
,选择 属性 > 安全。 - 添加用户
NETWORK SERVICE
或Local System
,赋予 完全控制权限。
- 右键
-
服务账户权限:
- 打开
services.msc
,找到MongoDB
服务。 - 右键 属性 > 登录,切换为本地系统账户或管理员账户。
- 打开
方法 4:检查日志与数据完整性
步骤:
- 查看日志定位错误:
type C:\data\log\mongod.log
- 常见错误:
- 数据目录损坏:删除
mongod.lock
或修复数据库(需备份)。 - 端口占用:更换端口启动:
mongod --port 27018 --dbpath="C:\data\db"
- 数据目录损坏:删除
- 常见错误:
方法 5:彻底重装服务
步骤:
- 卸载现有服务:
mongod --remove sc delete MongoDB
- 清理残留文件(如旧配置或数据目录)。
- 通过配置文件重新安装(推荐):
- 配置文件示例(保存为
mongod.cfg
):systemLog:destination: filepath: C:\data\log\mongod.log storage:dbPath: C:\data\db net:bindIp: 127.0.0.1port: 27017
- 安装命令:
mongod --config "C:\path\to\mongod.cfg" --install
- 配置文件示例(保存为
测试连接
以下是.NET 9使用MongoDB:
MongoDB.Entities 是一个简洁高效的 .NET 库,为 MongoDB 提供了类似 ORM 的体验。以下是详细使用指南:
1. 安装MongoDB驱动
首先,通过NuGet安装MongoDB.Entities包:
dotnet add package MongoDB.Entities
2.基本连接操作
using MongoDB.Entities;
// 初始化数据库连接
await DB.InitAsync("test");
3.定义实体Book 类
public class Book : Entity
{public string Title { get; set; }public int Price { get; set; }public Author Author { get; set; }public List<string> Tags { get; set; }public DateTime PublishedOn { get; set; }
}public class Author
{public string FirstName { get; set; }public string LastName { get; set; }
}
var book = new Book
{Title = "MongoDB指南",Price = 99,Author = new Author { FirstName = "张", LastName = "三" },Tags = new List<string> { "数据库", "NoSQL" },PublishedOn = DateTime.UtcNow
};
4.CRUD 操作
创建(Create)
// 保存单个文档
await book.SaveAsync();var book1 = new Book
{Title = "JAVA入门",Price = 56,Author = new Author { FirstName = "李", LastName = "四" },Tags = new List<string> { "编程开发", "JAVA" },PublishedOn = DateTime.UtcNow
};
var book2 = new Book
{Title = ".NET 9",Price = 199,Author = new Author { FirstName = "王", LastName = "五" },Tags = new List<string> { "编程开发", ".NET" },PublishedOn = DateTime.UtcNow
};
var book3 = new Book
{Title = "计算机网络",Price = 399,Author = new Author { FirstName = "吴", LastName = "七" },Tags = new List<string> { "编程开发", "计算机网络" },PublishedOn = DateTime.UtcNow
};// 批量插入
var books = new[] { book1, book2, book3 };
await books.SaveAsync();
读取(Read)
// 按ID查找
var bookId = await DB.Find<Book>().OneAsync("5f8c9d3e6c1d4e2b3c8d9e0f");// 条件查询
var expensiveBooks = await DB.Find<Book>().Match(b => b.Price > 50).Sort(b => b.Price, Order.Descending).Limit(10).ExecuteAsync();
更新(Update)
// 更新整个文档
await DB.Update<Book>().MatchID("5f8c9d3e6c1d4e2b3c8d9e0f").ModifyWith(book).ExecuteAsync();// 部分更新
await DB.Update<Book>().Match(b => b.Price < 50).Modify(b => b.Price, 60).Modify(b => b.Title, "特价书").ExecuteAsync();// 递增操作
await DB.Update<Book>().MatchID("5f8c9d3e6c1d4e2b3c8d9e0f").Modify(b => b.Price, +10).ExecuteAsync();
删除(Delete)
// 按ID删除
await DB.DeleteAsync<Book>("5f8c9d3e6c1d4e2b3c8d9e0f");// 条件删除
await DB.DeleteAsync<Book>(b => b.Price < 30);