VSCode创建连接MongoDB的WebAPI

  前面的文章介绍了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

猜你喜欢

转载自blog.csdn.net/gc_2299/article/details/120926855