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);
相关推荐
竹照煜_ysn5 小时前
STM32——软硬件I2C
stm32·嵌入式硬件·mongodb
唐青枫7 小时前
别滥用 Task.Run:C# 异步并发实操指南
c#·.net
cpsvps_net16 小时前
美国服务器环境下Windows容器工作负载智能弹性伸缩
windows
甄超锋16 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cpsvps18 小时前
美国服务器环境下Windows容器工作负载基于指标的自动扩缩
windows
zzzhpzhpzzz20 小时前
Win10快速安装.NET3.5
.net·win10
网硕互联的小客服21 小时前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
etcix1 天前
implement copy file content to clipboard on Windows
windows·stm32·单片机
许泽宇的技术分享1 天前
Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析
windows·自动化·.net
非凡ghost1 天前
AMS PhotoMaster:全方位提升你的照片编辑体验
windows·学习·信息可视化·软件需求