【愚公系列】2022年05月 .NET架構(gòu)班 056-分布式中間件 .Net Core下Mongodb基本使用

      網(wǎng)友投稿 657 2025-04-04

      前言

      1.什么是MongoDB

      MongoDB是文檔數(shù)據(jù)庫(kù),專門用來(lái)存儲(chǔ)類似Json文檔的數(shù)據(jù)庫(kù)。

      2.什么是文檔

      json,xml ,yaml這些就是文檔。mongodb主要是用來(lái)存儲(chǔ)什么文檔呢,主要是存儲(chǔ)Bson文檔,Bson文檔和json是類似的,不同在于Bson文檔主要是可以添加數(shù)據(jù)類型。

      一、Mongodb誕生背景

      1.單體電商系統(tǒng)

      需求:查詢訂單實(shí)現(xiàn)過程,客戶端發(fā)起查詢請(qǐng)求—>電商系統(tǒng)—->電商數(shù)據(jù)庫(kù)—>訂單表和商品表進(jìn)行關(guān)聯(lián)。

      問題:如果電商系統(tǒng)并發(fā)量,業(yè)務(wù)量,數(shù)據(jù)量全部上升之后,單體系統(tǒng)查詢,添加,修改,刪除性能會(huì)急劇下降。進(jìn)一步甚至?xí)?dǎo)致系統(tǒng)宕機(jī)(宕機(jī)也就是無(wú)法訪問),如果系統(tǒng)出現(xiàn)了宕機(jī)問題,直接導(dǎo)致客戶端無(wú)法訪問。

      解決方案:需要進(jìn)行業(yè)務(wù)模塊拆分,形成電商微服務(wù)系統(tǒng)。

      2.電商微服務(wù)系統(tǒng)

      需求:查詢訂單實(shí)現(xiàn)過程,客戶端發(fā)起查詢請(qǐng)求—>電商網(wǎng)站—->訂單微服務(wù)—>電商數(shù)據(jù)庫(kù)。 電商網(wǎng)站—->商品微服務(wù)—>電商數(shù)據(jù)庫(kù)。

      問題:一次訂單查詢需要涉及到2個(gè)微服務(wù)(訂單微服務(wù)、商品微服務(wù))查詢。如果并發(fā)量比較大,會(huì)導(dǎo)致兩個(gè)微服務(wù)查詢性能下降。因?yàn)槭峭秸?qǐng)求,同步請(qǐng)求并發(fā)處理有限。如果2個(gè)微服務(wù)其中一個(gè)微服務(wù)宕機(jī)了,會(huì)導(dǎo)致無(wú)法進(jìn)行查詢。

      解決方案:使用MongoDB

      3.電商微服務(wù)系統(tǒng)-MongoDB

      查詢訂單實(shí)現(xiàn)過程,客戶端發(fā)起查詢請(qǐng)求—>電商網(wǎng)站—->MongoDB。

      在MongoDB中可以一次性查詢出訂單商品數(shù)據(jù)。而且還可以提升性能。這就是我們?cè)陔娚滔到y(tǒng)中使用MongoDB原因

      二、Mongodb前提準(zhǔn)備

      1.MongoDB

      MongoDB-:https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-5.0.7-rc1-signed.msi

      2.MongoDB Compass

      MongoDB Compass-:https://downloads.mongodb.com/compass/mongodb-compass-1.31.1-win32-x64.zip

      三、啟動(dòng)Mongodb

      1.先進(jìn)入到MongoDB中

      2.然后打開MongoDB.conf配置,在里面添加

      # Where and how to store data. storage: dbPath: D:\work\net\mongodb\MongoDB-5.0.6\data journal: enabled: true # engine: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true path: D:\work\net\mongodb\MongoDB-5.0.6\log\mongod.log # network interfaces net: port: 27017 bindIp: 127.0.0.1

      3.啟動(dòng)MongoDB

      mongod.exe –config “D:\work\net\mongodb\MongoDB-5.0.6\bin\mongod.cfg”

      四、.Net Core下Mongodb基本使用

      【愚公系列】2022年05月 .NET架構(gòu)班 056-分布式中間件 .Net Core下Mongodb基本使用

      1.下載對(duì)應(yīng)的包

      MongoDB.Driver

      2.封裝

      創(chuàng)建ProductController類,在ProductController類中添加代碼

      ///

      /// 商品服務(wù)接口 /// public interface IProductService { void Create(Product Product); public void CreateList(List Products); IEnumerable GetProducts(); Product GetProductById(string id); public IEnumerable GetProductsByPage(int Page, int PageSize); public IEnumerable GetProductsBySort(Product product, int Page, int PageSize); public IEnumerable GetProductsByAggregation(Product product); void Update(string id,Product Product); public void UpdateList(string id, Product Product); // 更新字段 public void UpdateFiled(string id, ProductUpdateFiledDto productUpdateFiledDto); void Delete(Product Product); public void DeleteList(Product Product); bool ProductExists(string id); // 字段修改 public void Replace(string id, Product Product); // 創(chuàng)建索引 public string CreateIndex(); }

      ///

      /// 商品服務(wù)實(shí)現(xiàn) /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB連接 var client = new MongoClient("mongodb://localhost:27017"); // 2、獲取商品庫(kù)(自己創(chuàng)建商品數(shù)據(jù)) var database = client.GetDatabase("ProductDB"); // 3、獲取商品表(自己創(chuàng)建商品數(shù)) _products = database.GetCollection("Product"); } public void Create(Product Product) { _products.InsertOne(Product); } }

      3.配置

      在ConfigureServices中注冊(cè)

      services.AddSingleton();

      4.注入到控制器

      ///

      /// 商品服務(wù)實(shí)現(xiàn) /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB連接 var client = new MongoClient("mongodb://localhost:27017"); // 2、獲取商品庫(kù)(自己創(chuàng)建商品數(shù)據(jù)) var database = client.GetDatabase("ProductDB"); // 3、獲取商品表(自己創(chuàng)建商品數(shù)) _products = database.GetCollection("Product"); } public void Create(Product Product) { _products.InsertOne(Product); } }

      .NET MongoDB 分布式 數(shù)據(jù)庫(kù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Java vs Python:Java 開發(fā)人員的基本 Python
      下一篇:獲取Excel數(shù)據(jù)透視表數(shù)據(jù)
      相關(guān)文章
      久久久久亚洲国产AV麻豆| 亚洲视频.com| 亚洲AV无码精品蜜桃| 亚洲色图国产精品| 国产亚洲A∨片在线观看| 色久悠悠婷婷综合在线亚洲| 国产精品亚洲高清一区二区| 国产亚洲精品激情都市| 亚洲爆乳AAA无码专区| 亚洲国产中文在线视频| 亚洲天堂中文字幕在线观看| 亚洲AV天天做在线观看| 久久亚洲精精品中文字幕| 久久av无码专区亚洲av桃花岛| 久久精品国产亚洲精品2020| 亚洲va无码va在线va天堂| 亚洲成人午夜在线| 亚洲色欲或者高潮影院| 亚洲伊人久久精品| 国产精品亚洲精品观看不卡| tom影院亚洲国产一区二区| 亚洲中文字幕无码久久2020| 亚洲AV永久无码精品网站在线观看| 亚洲av最新在线观看网址| 婷婷国产偷v国产偷v亚洲| 亚洲精品无码久久不卡| 久久亚洲国产成人精品无码区| 亚洲日产无码中文字幕| 久久亚洲免费视频| 亚洲精品一区二区三区四区乱码| 亚洲国产成人久久99精品| 亚洲色大成网站www| 亚洲av无码一区二区三区四区| 九月婷婷亚洲综合在线 | 国产亚洲成人在线播放va| 久久精品九九亚洲精品天堂| 99亚洲精品高清一二区| 国产.亚洲.欧洲在线| 亚洲AV噜噜一区二区三区| 亚洲毛片网址在线观看中文字幕| 亚洲热妇无码AV在线播放|