注:本文首发于码友网--《.NET Core(.NET 6)控制台应用程序与MongoDB Atlas入门实战示例教程详解》
.NET Core(.NET 6)控制台应用程序与MongoDB Atlas入门示例教程详解概述MongoDB 是一个基于分布式文件存储的数据库,由C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储:
{ name: "Angeladady", age: 18, hobbies: ["Steam", "Guitar"]}
文档型的数据存储方式有几个重要好处:
数据类型可以对应到语言的数据类型,如数组类型(Array)和对象类型(Object);可以嵌套,有时关系型数据库涉及几个表的操作,在MongoDB中一次就能完成,可以减少昂贵的连接花销;不对数据结构加以限制,不同的数据结构可以存储在同一张表。开始MongoDB Atlas之旅准备工作在开始本文的.NET 6 + MongoDB Atlas实战之前,请先准备一个MongoDB Atlas账号以及一个Atlas集群(Sandbox集群)。
MongoDB Atlas 是一个 MongoDB 数据库即服务平台,可以为你配置和托管数据库。
MongoDB Atlas Sandbox集群允许你配置一个内存共享,存储空间为512MB的3节点的开发测试集群(免费)
申请MongoDB Atlas的免费集群请参数:MongoDB Atlas 入门教程
创建.NETCore(.NET 6)控制台应用程序本文使用Visual Studio 2022进行示例项目开发
打开Visual Studio 2022,创建一个空白解决方案,取名为MongoDBDemo。之后,右键单击解决方案,选择添加-->新建项目,在添加新项目窗口中,选择控制台应用,如下:
之后,在配置新项目对话框中,填写项目名称(MongoDBDemo.ConsoleApp)和位置,如下:
在其他信息对话框中,框架选择**.NET 6.0(长期支持)**,如下:
点击创建,Visual Studio将自动创建项目。
安装基于.NET6的MongoDB驱动NuGet程序包右击MongoDBDemo.ConsoleApp的依赖项-->管理NuGet程序包,如下:
在打开的NuGet包管理器的搜索框中,输入关键词MongoDB.Driver,然后选中MongoDB.Driver项目,最后点击安装以在项目中安装MongoDB的.NET驱动程序包,如下:
使用.NETCore(.NET 6)连接到MongoDB Atlas打开Program.cs文件,现在我们使用MongoClient来建立.NET 6应用程序与MongoDB Atlas之间的连接,代码如下:
using MongoDB.Driver;var connectionString = "MONGODB_ATLAS_URL";var client = new MongoClient(connectionString);var databas = client.ListDatabaNames().ToList();foreach (var databa in databas){ Console.WriteLine(databa);}
其中,上例代码中的MONGODB_ATLAS_URL可以在MongoDB Atlas集群中获取到,如下所示:
注:不同用户的MongoDB Atlas群集地址不同,请替换成你自己的,<password>也改成你自己的MongoDB账号的对应密码。
配置好MongoDB的连接字符串后,运行MongoDBDemo.ConsoleApp控制台应用程序,如果配置正确,将得到类似如下的输出:
sample_geospatialsample_mflixsample_restaurantssample_suppliessample_trainingsample_weatherdataadminlocal
这里笔者导入了一些MongoDB官方的示例数据库,所以,你运行的结果可能与本文的有所不同。
以上是.NET 6程序连接到MongoDB Atlas服务器并列出了当前集群中所有的数据库。
使用.NETCore(.NET 6)向MongoDB Atlas集群数据库中写入数据在集群中创建一个名为demo的数据库,集合(Collection)名称为dc_ur,如下图:
打开Visual Studio,在MongoDBDemo.ConsoleApp项目中创建一个命名为Models的文件夹,并在其中创建Ur.cs的用户类,其属性设置如下:
namespace MongoDBDemo.ConsoleApp.Models{ public class Ur { public ObjectId Id { get; t; } public string Name { get; t; } public string Password { get; t; } public DateTime CreatedAt { get; t; } public bool IsActive { get; t; } public int Age { get; t; } public long Order { get; t; } public string Description { get; t; } }}
为了建立C#实体类与MongoDB字段之间的映射关系,需要使用MongoDB.Bson中的特性对Ur类的属性进行标记,如下:
using MongoDB.Bson;using MongoDB.Bson.Serialization.Attributes;namespace MongoDBDemo.ConsoleApp.Models{ public class Ur { [BsonElement("_id")] public ObjectId Id { get; t; } [BsonElement("name")] public string Name { get; t; } [BsonElement("password")] public string Password { get; t; } [BsonElement("created_at")] //[BsonDateTimeOptions(Kind = DateTimeKind.Local)] public DateTime CreatedAt { get; t; } [BsonElement("is_active")] public bool IsActive { get; t; } [BsonElement("age")] public int Age { get; t; } [BsonElement("order")] public long Order { get; t; } [BsonElement("description")] public string Description { get; t; } }}
以上主要使用了BsonElement特性来映射实体类与MongoDB字段之间的映射关系。
接下来,使用.NET 6的Ur类向MongoDB的dc_ur数据库中写入数据,示例代码如下:
using MongoDB.Driver;using MongoDBDemo.ConsoleApp.Models;var dbName = "demo";var connectionString = "MONGODB_ATLAS_URL";var client = new MongoClient(connectionString);var databas = client.ListDatabaNames().ToList();foreach (var databa in databas){ Console.WriteLine(databa);}var dcCollection = client.GetDataba(dbName).GetCollection<Ur>("dc_ur");var random = new Random();var count = 0L;CreateUr();Console.ReadKey();// 创建用户void CreateUr(){ // 查询当前数据库中有多少条记录 count = dcCollection.CountDocuments("{}"); dcCollection.InrtOne(new Ur { Age = random.Next(10, 60), CreatedAt = DateTime.Now, IsActive = true, Name = $"Rector_{count + 1}", Password = "123456", Order = count + 1 });}
运行以上示例程序,再打开MongoDB Atlas面板,可以看到.NET 6程序写入的数据,如下:
.NET Core(.NET 6)查询MongoDB数据这里,我们查询dc_ur集合中的所有用户记录,示例代码如下:
using MongoDB.Driver;using MongoDBDemo.ConsoleApp.Models;var dbName = "demo";var connectionString = "MONGODB_ATLAS_URL";var client = new MongoClient(connectionString);var dcCollection = client.GetDataba(dbName).GetCollection<Ur>("dc_ur");FindAllUrs();Console.ReadKey();void FindAllUrs(){ var count = dcCollection.CountDocuments("{}"); Console.WriteLine($"总用户数:{count}"); var urs = dcCollection.AsQueryable().ToList(); foreach (var ur in urs) { Console.WriteLine($"id:{ur.Id},name:{ur.Name},password:{ur.Password},created_at:{ur.CreatedAt},is_active:{ur.IsActive},order:{ur.Order},age:{ur.Age}"); }}
运行结果如下:
总用户数:1id:6204c4104c7002c60e09ad72,name:Rector_1,password:123456,created_at:2022-02-10 07:51:44,is_active:True,order:1,age:32
.NET Core(.NET 6)使用Update更新MongoDB数据
using MongoDB.Driver;using MongoDBDemo.ConsoleApp.Models;var dbName = "demo";var connectionString = "MONGODB_ATLAS_URL";var client = new MongoClient(connectionString);var dcCollection = client.GetDataba(dbName).GetCollection<Ur>("dc_ur");UpdateUr();FindAllUrs();Console.ReadKey();void UpdateUr(){ var update = Builders<Ur>.Update.Set("age", 36); dcCollection.FindOneAndUpdate(x => x.Order == 1, update);}void FindAllUrs(){ var count = dcCollection.CountDocuments("{}"); Console.WriteLine($"总用户数:{count}"); var urs = dcCollection.AsQueryable().ToList(); foreach (var ur in urs) { Console.WriteLine($"id:{ur.Id},name:{ur.Name},password:{ur.Password},created_at:{ur.CreatedAt},is_active:{ur.IsActive},order:{ur.Order},age:{ur.Age}"); }}
运行结果如下:
总用户数:1id:6204c4104c7002c60e09ad72,name:Rector_1,password:123456,created_at:2022-02-10 07:51:44,is_active:True,order:1,age:36
可以看到,用户Order=1的Age已经由原来的32更新成了当前的36,说明更新操作成功。
.NET Core(.NET 6)使用Replace替换MongoDB数据当然,MongoDB还有Replace的API,可以将集合中的数据替换成新的数据,示例如下:
using MongoDB.Driver;using MongoDBDemo.ConsoleApp.Models;var dbName = "demo";var connectionString = "MONGODB_ATLAS_URL";var client = new MongoClient(connectionString);var dcCollection = client.GetDataba(dbName).GetCollection<Ur>("dc_ur");ReplaceUr();FindAllUrs();Console.ReadKey();void ReplaceUr(){ var item = dcCollection.Find(x => x.Order == 1).FirstOrDefault(); if (item != null) { item.Age = 60; item.Name = "Rector Liu"; item.Description = "修改(替换)"; dcCollection.ReplaceOne(x => x.Order == 1, item, new ReplaceOptions()); }}void FindAllUrs(){ var count = dcCollection.CountDocuments("{}"); Console.WriteLine($"总用户数:{count}"); var urs = dcCollection.AsQueryable().ToList(); foreach (var ur in urs) { Console.WriteLine($"id:{ur.Id},name:{ur.Name},password:{ur.Password},created_at:{ur.CreatedAt},is_active:{ur.IsActive},order:{ur.Order},age:{ur.Age}"); }}
运行结果如下:
总用户数:1id:6204c4104c7002c60e09ad72,name:Rector Liu,password:123456,created_at:2022-02-10 07:51:44,is_active:True,order:1,age:60
.NET Core(.NET 6)删除MongoDB数据
.NET Core(.NET 6)删除MongoDB的数据操作如下:
using MongoDB.Driver;using MongoDBDemo.ConsoleApp.Models;var dbName = "demo";var connectionString = "MONGODB_ATLAS_URL";var client = new MongoClient(connectionString);var dcCollection = client.GetDataba(dbName).GetCollection<Ur>("dc_ur");DeleteUr();FindAllUrs();Console.ReadKey();void DeleteUr(){ dcCollection.DeleteOne(x => x.Id == new MongoDB.Bson.ObjectId("6204c4104c7002c60e09ad72"));}void FindAllUrs(){ var count = dcCollection.CountDocuments("{}"); Console.WriteLine($"总用户数:{count}"); var urs = dcCollection.AsQueryable().ToList(); foreach (var ur in urs) { Console.WriteLine($"id:{ur.Id},name:{ur.Name},password:{ur.Password},created_at:{ur.CreatedAt},is_active:{ur.IsActive},order:{ur.Order},age:{ur.Age}"); }}
运行结果如下:
总用户数:0
好了,以上即是本文为大家分享的.NET Core(.NET 6)控制台应用程序与MongoDB Atlas的入门实战示例教程,希望对你了解、学习在.NET Core(.NET 6)应用程序中如何使用MongoDB数据库有所帮助。
本文发布于:2023-02-28 20:03:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/167765200174977.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:控制台应用程序(控制台应用程序是什么).doc
本文 PDF 下载地址:控制台应用程序(控制台应用程序是什么).pdf
留言与评论(共有 0 条评论) |