VSCode创建连接MongoDB的WebAPI

本文档展示了如何在ASP.NET Core WebAPI项目中连接MongoDB数据库,创建数据结构、配置连接信息,并实现数据的读取和插入操作。通过MongoDB.Driver包,创建BubbleData模型,匹配MongoDB中的文档结构。同时,利用appsettings.json配置数据库连接,并在Startup.cs中注册相关服务,实现数据操作类的实例化。
摘要由CSDN通过智能技术生成

  前面的文章介绍了MongoDB的基本操作,并创建了ChartData数据库,同时在气泡图集合BubbleData中维护了文档数据。本文学习使用ASP.NET Core WebAPI连接MongoDB数据库。
  在终端中运行下列命令创建WebAPI,同时调用VSCode开始编辑项目。

	dotnet new webapi -o ChartJSDataOperation
	code ChartJSDataOperation

  VSCode终端中运行下列命令添加MongoDB驱动(微软教程中建议先确定驱动的稳定版本,然后add package命令中指定版本,文中没有(lande)这么做)。

dotnet add package MongoDB.Driver

在这里插入图片描述
  接着创建BubbleData集合对应的数据结构,该数据结构中的属性应与文档结构相同,并且大小写一致(参考文献1: BsonId指定属性为文档的主键,BsonRepresentation(BsonType.ObjectId)允许将参数作为类型 string 而非 ObjectId 结构传递。 Mongo 处理从 string 到 ObjectId 的转换)。

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

namespace ChartJSDataOperation.Models
{
    public class BubbleData
    {
        [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }

        public decimal x { get; set; }

        public decimal y { get; set; }

        public decimal r { get; set; }
    }
}

  然后在appsettings.json文件中配置MongoDB的连接信息,包括地址、数据库名称、集合名称等,同时在Models文件夹下创建对连接信息对应的接口和类,以便程序能从配置文件中自动提取信息并创建类的实例对象。

	//appsettings.json中的配置信息
	"ChartJSDatabaseSettings": {
    "DataCollectionName": "BubbleData",
    "ConnectionString": "mongodb://localhost:27017",
    "DatabaseName": "ChartData"
  },
	public class ChartJSDatabaseSettings : IChartJSDatabaseSettings
    {
        public string DataCollectionName { get; set; }
        public string ConnectionString { get; set; }
        public string DatabaseName { get; set; }
    }

    public interface IChartJSDatabaseSettings
    {
        string DataCollectionName { get; set; }
        string ConnectionString { get; set; }
        string DatabaseName { get; set; }
    }

  下一步创建MongoDB的操作类,该类主要用于连接MongoDB数据库并获取集合中的文档数据,本类精简自参考文献1中的类,主要用于获取全部数据及新增单条数据,其代码如下:

using MongoDB.Driver;
using System.Collections.Generic;
using System.Linq;

namespace ChartJSDataOperation.Models
{
    public class ChartDataService
    {
        private readonly IMongoCollection<BubbleData> _bubble;

        public ChartDataService(IChartJSDatabaseSettings settings)
        {
            var client = new MongoClient(settings.ConnectionString);
            var database = client.GetDatabase(settings.DatabaseName);

            _bubble = database.GetCollection<BubbleData>(settings.DataCollectionName);
        }

        public List<BubbleData> Get()
        {
             _bubble.Find(bData => true).ToList();     
        }  

        public BubbleData Create(BubbleData bData)
        {
            _bubble.InsertOne(bData);
            return bData;
        }
     }
}

  创建控制类,并在控制类中实现响应GET请求并返回集合中所有文档的函数,这部分代码与之前介绍的相同,在此不在赘述。
  最后在startup文件的ConfigureServices函数中注册数据库操作类、配置类等。

	public void ConfigureServices(IServiceCollection services)
        {

            services.Configure<ChartJSDatabaseSettings>(
                 Configuration.GetSection(nameof(ChartJSDatabaseSettings)));

            services.AddSingleton<IChartJSDatabaseSettings>(sp =>
                sp.GetRequiredService<IOptions<ChartJSDatabaseSettings>>().Value);
                
            services.AddSingleton<ChartDataService>();
					
					...
					...
        }

  编译并运行项目,然后在浏览器中访问WebAPI,如下图所示,程序可以正常读取MongoDB数据库的文档数据。
在这里插入图片描述

  本文学习并参照参考文献1实现了在WebAPI中连接MongoDB数据库进行查询操作,后续还会继续学习、实践相关内容。

参考文献:
[1]https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-mongo-app?view=aspnetcore-5.0&tabs=visual-studio-code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值