乐趣区

关于.net:NET-CoreNET-6控制台应用程序与MongoDB-Atlas入门实战示例教程详解

注:本文首发于码友网 –《.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 入门教程

创立.NET Core(.NET 6)控制台应用程序

本文应用 Visual Studio 2022 进行示例我的项目开发

关上 Visual Studio 2022,创立一个空白解决方案,取名为 MongoDBDemo。之后,右键单击解决方案,抉择 增加 –> 新建我的项目 ,在 增加新我的项目 窗口中,抉择控制台利用,如下:

之后,在 配置新我的项目 对话框中,填写项目名称 (MongoDBDemo.ConsoleApp) 和地位,如下:

其余信息 对话框中,框架抉择.NET 6.0(长期反对),如下:

点击 创立,Visual Studio 将主动创立我的项目。

装置基于.NET 6 的 MongoDB 驱动 NuGet 程序包

右击 MongoDBDemo.ConsoleApp依赖项 –> 治理 NuGet 程序包,如下:

在关上的 NuGet 包管理器的搜寻框中,输出关键词 MongoDB.Driver,而后选中MongoDB.Driver 我的项目,最初点击 装置 以在我的项目中装置 MongoDB 的.NET 驱动程序包,如下:

应用.NET Core(.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 databases = client.ListDatabaseNames().ToList();
foreach (var database in databases)
{Console.WriteLine(database);
}

其中,上例代码中的 MONGODB_ATLAS_URL 能够在 MongoDB Atlas 集群中获取到,如下所示:

注:不同用户的 MongoDB Atlas 群集地址不同,请替换成你本人的,<password>也改成你本人的 MongoDB 账号的对应明码。

配置好 MongoDB 的连贯字符串后,运行 MongoDBDemo.ConsoleApp 控制台应用程序,如果配置正确,将失去相似如下的输入:

sample_geospatial
sample_mflix
sample_restaurants
sample_supplies
sample_training
sample_weatherdata
admin
local

这里笔者导入了一些 MongoDB 官网的示例数据库,所以,你运行的后果可能与本文的有所不同。

以上是.NET 6 程序连贯到 MongoDB Atlas 服务器并列出了以后集群中所有的数据库。

应用.NET Core(.NET 6)向 MongoDB Atlas 集群数据库中写入数据

在集群中创立一个名为 demo 的数据库,汇合 (Collection) 名称为dc_user,如下图:

关上 Visual Studio,在 MongoDBDemo.ConsoleApp 我的项目中创立一个命名为 Models 的文件夹,并在其中创立 User.cs 的用户类,其属性设置如下:

namespace MongoDBDemo.ConsoleApp.Models
{
    public class User
    {public ObjectId Id { get; set;}
        public string Name {get; set;}
        public string Password {get; set;}
        public DateTime CreatedAt {get; set;}
        public bool IsActive {get; set;}
        public int Age {get; set;}
        public long Order {get; set;}
        public string Description {get; set;}
    }
}

为了建设 C# 实体类与 MongoDB 字段之间的映射关系,须要应用 MongoDB.Bson 中的个性对 User 类的属性进行标记,如下:

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

namespace MongoDBDemo.ConsoleApp.Models
{
    public class User
    {[BsonElement("_id")]
        public ObjectId Id {get; set;}
        [BsonElement("name")]
        public string Name {get; set;}
        [BsonElement("password")]
        public string Password {get; set;}
        [BsonElement("created_at")]
        //[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
        public DateTime CreatedAt {get; set;}
        [BsonElement("is_active")]
        public bool IsActive {get; set;}
        [BsonElement("age")]
        public int Age {get; set;}
        [BsonElement("order")]
        public long Order {get; set;}
        [BsonElement("description")]
        public string Description {get; set;}
    }
}

以上次要应用了 BsonElement 个性来映射实体类与 MongoDB 字段之间的映射关系。

接下来,应用.NET 6 的 User 类向 MongoDB 的 dc_user 数据库中写入数据,示例代码如下:

using MongoDB.Driver;
using MongoDBDemo.ConsoleApp.Models;
var dbName = "demo";
var connectionString = "MONGODB_ATLAS_URL";
var client = new MongoClient(connectionString);

var databases = client.ListDatabaseNames().ToList();
foreach (var database in databases)
{Console.WriteLine(database);
}

var dcCollection = client.GetDatabase(dbName).GetCollection<User>("dc_user");
var random = new Random();
var count = 0L;
CreateUser();

Console.ReadKey();


// 创立用户
void CreateUser()
{
    // 查问以后数据库中有多少条记录
    count = dcCollection.CountDocuments("{}");

    dcCollection.InsertOne(new User
    {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_user 汇合中的所有用户记录,示例代码如下:

using MongoDB.Driver;
using MongoDBDemo.ConsoleApp.Models;
var dbName = "demo";
var connectionString = "MONGODB_ATLAS_URL";
var client = new MongoClient(connectionString);
var dcCollection = client.GetDatabase(dbName).GetCollection<User>("dc_user");
FindAllUsers();
Console.ReadKey();

void FindAllUsers()
{var count = dcCollection.CountDocuments("{}");
    Console.WriteLine($"总用户数:{count}");
    var users = dcCollection.AsQueryable().ToList();
    foreach (var user in users)
    {Console.WriteLine($"id:{user.Id},name:{user.Name},password:{user.Password},created_at:{user.CreatedAt},is_active:{user.IsActive},order:{user.Order},age:{user.Age}");
    }
}

运行后果如下:

总用户数:1
id: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.GetDatabase(dbName).GetCollection<User>("dc_user");
UpdateUser();
FindAllUsers();
Console.ReadKey();

void UpdateUser()
{var update = Builders<User>.Update.Set("age", 36);
    dcCollection.FindOneAndUpdate(x => x.Order == 1, update);
}

void FindAllUsers()
{var count = dcCollection.CountDocuments("{}");
    Console.WriteLine($"总用户数:{count}");
    var users = dcCollection.AsQueryable().ToList();
    foreach (var user in users)
    {Console.WriteLine($"id:{user.Id},name:{user.Name},password:{user.Password},created_at:{user.CreatedAt},is_active:{user.IsActive},order:{user.Order},age:{user.Age}");
    }
}

运行后果如下:

总用户数:1
id:6204c4104c7002c60e09ad72,name:Rector_1,password:123456,created_at:2022-02-10 07:51:44,is_active:True,order:1,age:36

能够看到,用户 Order=1Age曾经由原来的 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.GetDatabase(dbName).GetCollection<User>("dc_user");
ReplaceUser();
FindAllUsers();
Console.ReadKey();

void ReplaceUser()
{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 FindAllUsers()
{var count = dcCollection.CountDocuments("{}");
    Console.WriteLine($"总用户数:{count}");
    var users = dcCollection.AsQueryable().ToList();
    foreach (var user in users)
    {Console.WriteLine($"id:{user.Id},name:{user.Name},password:{user.Password},created_at:{user.CreatedAt},is_active:{user.IsActive},order:{user.Order},age:{user.Age}");
    }
}

运行后果如下:

总用户数:1
id: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.GetDatabase(dbName).GetCollection<User>("dc_user");
DeleteUser();
FindAllUsers();
Console.ReadKey();

void DeleteUser()
{dcCollection.DeleteOne(x => x.Id == new MongoDB.Bson.ObjectId("6204c4104c7002c60e09ad72"));
}

void FindAllUsers()
{var count = dcCollection.CountDocuments("{}");
    Console.WriteLine($"总用户数:{count}");
    var users = dcCollection.AsQueryable().ToList();
    foreach (var user in users)
    {Console.WriteLine($"id:{user.Id},name:{user.Name},password:{user.Password},created_at:{user.CreatedAt},is_active:{user.IsActive},order:{user.Order},age:{user.Age}");
    }
}

运行后果如下:

总用户数:0

好了,以上即是本文为大家分享的.NET Core(.NET 6)控制台应用程序与 MongoDB Atlas 的入门实战示例教程,心愿对你理解、学习在.NET Core(.NET 6)应用程序中如何应用 MongoDB 数据库有所帮忙。

退出移动版