Windows安装MongoDb.并使用.NET 9连接

以下是在 Windows 系统上安装 MongoDB 的详细步骤


方法一:通过安装向导

  1. 下载安装包

    • 访问官网下载页:https://www.mongodb.com/try/download/community
    • 选择版本:
      • Version :推荐最新稳定版(如 8.09)。
      • Platform :选择 Windows
      • Package :选择 MSI 格式。
    • 点击下载(DownLoad)。
  2. 运行安装向导

    • 双击下载的 .msi 文件。
    • 按提示操作,可自定义以下选项:
      • 安装路径 :默认是 C:\Program Files\MongoDB\Server\<版本>\
      • 安装组件 :勾选 Install MongoDB as a Service(推荐以服务方式安装)。
      • 数据目录 :默认是 C:\data\db(需手动创建目录或修改路径)。
  3. 配置环境变量(可选)

    • 将 MongoDB 的 bin 目录(如 C:\Program Files\MongoDB\Server\7.0\bin)添加到系统环境变量 PATH 中,方便命令行调用。
  4. 验证安装

    • 打开命令提示符(CMD),输入:

      bash 复制代码
      mongod --version
      mongo --version

      若显示版本信息,则安装成功。

建议避免使用包含空格的路径,如"Program Files",这可能导致程序运行异常。


方法二:通过压缩包(灵活安装)

  1. 下载 ZIP 包

    • 在官网下载页选择 ZIP 格式包(如 mongodb-windows-x86_64-7.0.zip)。
  2. 解压并配置

    • 将 ZIP 解压到目标目录(如 D:\mongodb\)。
    • 创建数据存储目录(如 D:\mongodb\data\db)。
  3. 启动 MongoDB

    • 打开 CMD,切换到 MongoDB 的 bin 目录:

      bash 复制代码
      cd D:\mongodb\bin
    • 启动服务(指定数据目录):

      bash 复制代码
      mongod --dbpath D:\mongodb\data\db
    • 保持窗口运行,服务默认监听 27017 端口。

  4. 连接测试

    • 新开一个 CMD 窗口,运行:

      bash 复制代码
      mongo

      进入 MongoDB Shell 即表示成功。


配置为系统服务(开机自启)

  1. 在 MongoDB 的 bin 目录下创建配置文件 mongod.cfg(内容如下):

    yaml 复制代码
    systemLog:
      destination: file
      path: D:\mongodb\log\mongod.log
      logAppend: true
    storage:
      dbPath: D:\mongodb\data\db
    net:
      port: 27017
      bindIp: 127.0.0.1
  2. 以管理员身份运行 CMD,执行:

    bash 复制代码
    mongod --config "D:\mongodb\bin\mongod.cfg" --install
  3. 启动服务:

    bash 复制代码
    net start MongoDB

常见问题

  1. 端口冲突

    • 确保 27017 端口未被占用,或通过 --port 指定其他端口。
  2. 权限问题

    • 以管理员身份运行 CMD,或为数据目录赋予写入权限。
  3. 连接失败

    • 检查服务是否启动:net start MongoDB
  4. 权限不足

    • services Mongodb Server failed to start verify that you have sufficient privileges to start system services
    • 右键 命令提示符(CMD) 或 PowerShell,选择 "以管理员身份运行"。
      以下是排版优化后的 Markdown 内容,结构更清晰且符合技术文档规范:
  5. 无法启动
    问题描述

    Windows 无法启动 MongoDB 服务,报错 1053
    服务没有及时响应启动或控制请求

原因分析

权限不足、服务配置错误或启动超时可能导致此问题。

解决方案

方法 1:重新安装 MongoDB 服务

步骤

  1. 以管理员身份运行 CMD,执行以下命令(替换实际路径):

    bash 复制代码
    mongod --remove
    mongod --install --dbpath="C:\data\db" --logpath="C:\data\log\mongod.log" --serviceName="MongoDB"
    • --dbpath:数据存储目录(需提前创建,如 C:\data\db
    • --logpath:日志文件路径(需确保目录存在且有写入权限)
    • --serviceName:服务名称(默认 MongoDB
  2. 启动服务:

    bash 复制代码
    net start MongoDB

方法 2:调整服务启动超时时间

步骤

  1. 打开注册表编辑器(regedit),导航至:

    复制代码
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
  2. 新建 DWORD (32-bit),命名为 ServicesPipeTimeout,值设为 60000(单位:毫秒,即 60 秒)。

  3. 重启计算机后重试启动服务。


方法 3:检查权限配置

关键操作

  • 目录权限

    1. 右键 C:\data\dbC:\data\log,选择 属性 > 安全
    2. 添加用户 NETWORK SERVICELocal System,赋予 完全控制权限
  • 服务账户权限

    1. 打开 services.msc,找到 MongoDB 服务。
    2. 右键 属性 > 登录,切换为本地系统账户或管理员账户。

方法 4:检查日志与数据完整性

步骤

  1. 查看日志定位错误:

    bash 复制代码
    type C:\data\log\mongod.log
    • 常见错误
      • 数据目录损坏 :删除 mongod.lock 或修复数据库(需备份)。

      • 端口占用 :更换端口启动:

        bash 复制代码
        mongod --port 27018 --dbpath="C:\data\db"

方法 5:彻底重装服务

步骤

  1. 卸载现有服务:

    bash 复制代码
    mongod --remove
    sc delete MongoDB
  2. 清理残留文件(如旧配置或数据目录)。

  3. 通过配置文件重新安装(推荐):

    • 配置文件示例(保存为 mongod.cfg):

      yaml 复制代码
      systemLog:
        destination: file
        path: C:\data\log\mongod.log
      storage:
        dbPath: C:\data\db
      net:
        bindIp: 127.0.0.1
        port: 27017
    • 安装命令:

      bash 复制代码
      mongod --config "C:\path\to\mongod.cfg" --install

测试连接


以下是.NET 9使用MongoDB:

MongoDB.Entities 是一个简洁高效的 .NET 库,为 MongoDB 提供了类似 ORM 的体验。以下是详细使用指南:

1. 安装MongoDB驱动

首先,通过NuGet安装MongoDB.Entities包:

bash 复制代码
dotnet add package MongoDB.Entities

2.基本连接操作

bash 复制代码
using MongoDB.Entities;
// 初始化数据库连接
await DB.InitAsync("test");

3.定义实体Book 类

csharp 复制代码
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; }
}
csharp 复制代码
var book = new Book
{
    Title = "MongoDB指南",
    Price = 99,
    Author = new Author { FirstName = "张", LastName = "三" },
    Tags = new List<string> { "数据库", "NoSQL" },
    PublishedOn = DateTime.UtcNow
};

4.CRUD 操作

创建(Create)

csharp 复制代码
// 保存单个文档
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)

csharp 复制代码
// 按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)

csharp 复制代码
// 更新整个文档
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)

csharp 复制代码
// 按ID删除
await DB.DeleteAsync<Book>("5f8c9d3e6c1d4e2b3c8d9e0f");

// 条件删除
await DB.DeleteAsync<Book>(b => b.Price < 30);
相关推荐
腾昵猫3 分钟前
Linux从网卡接收到内核软中断处理整体流程
linux·运维·windows
ImangoCloud5 分钟前
Git的windows开发与linux开发配置
linux·windows·git
鹏大师运维25 分钟前
中科方德鸳鸯火锅平台使用教程:轻松运行Windows应用!
linux·windows·国产操作系统·统信uos·中科方德·麒麟2503·鸳鸯火锅
若汝棋茗1 小时前
C#在 .NET 9.0 中启用二进制序列化:配置、风险与替代方案
java·c#·.net·序列化
fengchengwu20123 小时前
mongodb部署Shard Cluster
linux·mongodb·分片集群·shard cluster
CodeCraft Studio4 小时前
国产化Excel处理组件Spire.XLS for .NET系列教程:通过 C# 将 TXT 文本转换为 Excel 表格
c#·.net·excel
vvilkim7 小时前
深入理解 MongoDB 的 _id 和 ObjectId:从原理到实践
数据库·mongodb
vvilkim7 小时前
深入理解 MongoDB 的 BSON 格式:原理、优势与实践应用
数据库·mongodb
lolo大魔王7 小时前
MongoDB的管道聚合
数据库·mongodb