前言
mysql和mongdb區別:
Mongodb語法匯總如下:
# 插入 db.集合名稱.insert(數據) #查找全部 db.集合名稱.find() #查詢一個 db.集合名稱.findOne({userid:'01'}) db.集合名稱.find().limit(3) # 修改文檔 db.集合名稱.update(條件,修改后數據) # 刪除全部文檔 db.集合名稱.remove({}) # 刪除指定文檔 db.集合名稱.remove({_id:'1'}) # 統計條數 db.集合名稱.count() # 根據條件統計條數 db.集合名稱.count({content:'內容'}) # 模糊查詢 MongoDB的模糊查詢是通過正則表達式的方式實現的。格式為:/模糊查詢字符串/ db.集合名稱.find({字段名稱:/bug/}) # 匹配content中以‘太’開頭的數據 db.集合名稱.find({字段名稱:/^太/}) # 大于 等于 小于 使用這些需要單獨將該值再放入一個{}中 db.集合名稱.find({ 字段名稱 : { $gt: value }}) // 大于: field > value db.集合名稱.find({ 字段名稱 : { $lt: value }}) // 小于: field < value db.集合名稱.find({ 字段名稱 : { $gte: value }}) // 大于等于: field >= value db.集合名稱.find({ 字段名稱 : { $lte: value }}) // 小于等于: field <= value db.集合名稱.find({ 字段名稱 : { $ne: value }}) // 不等于: field != value //查詢id字段在1和2 db.集合名稱.find({字段名稱:{$in:["1","2"]}}) //查詢id字段不在1和2 db.集合名稱.find({字段名稱:{$nin:["1","2"]}}) //查詢訪問量大于等于1000 且小于2000的數據 db.集合名稱.find({$and:[ {字段名稱:{$gte:1000}} ,{字段名稱:{$lt:2000} }]}) db.集合名稱.find({$or:[ {字段名稱:{$gte:1000}} ,{字段名稱:{$lt:2000} }]}) //列值增長 db.集合名稱.update({字段名稱:"2"},{$inc:{visits:NumberInt(2)}})
一、.Net Core下使用Mongodb落地情況分析
1.批量添加
情況1:當客戶端通過電商微服務往MongoDB中添加商品數據的時候,如果一個個添加,添加效率會比較低。如何解決添加商品添加效率低的問題?
方案:批量添加
/// /// 商品控制器 /// [ApiController] [Route("Product")] public class ProductController : ControllerBase { private readonly IProductService _productService; public ProductController(IProductService productService) { _productService = productService; } /// /// 批量添加商品 /// /// /// [HttpPost("ProductList")] public ActionResult CreateProductList(Product[] Products) { _productService.CreateList(Products.ToList()); return CreatedAtAction("GetProduct", Products); } }
/// /// 商品服務實現 /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB連接 var client = new MongoClient("mongodb://localhost:27017"); // 2、獲取商品庫(自己創建商品數據) var database = client.GetDatabase("ProductDB"); // 3、獲取商品表(自己創建商品數) _products = database.GetCollection("Product"); } public void CreateList(List Products) { _products.InsertMany(Products); } }
2.條件查詢
分析:當客戶端通過電商微服務往MongoDB中添加商品數據的時候,商品數據已經被成功添加到MongoDB中。如何從MongoDB中查詢商品數據?
方案:查詢商品
/// /// 商品控制器 /// [ApiController] [Route("Product")] public class ProductController : ControllerBase { private readonly IProductService _productService; public ProductController(IProductService productService) { _productService = productService; } /// /// 商品單個商品 /// /// /// [HttpGet("{id}")] public ActionResult GetProduct(string id) { var product = _productService.GetProductById(id); if (product == null) { return NotFound(); } return product; } }
/// /// 商品服務實現 /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB連接 var client = new MongoClient("mongodb://localhost:27017"); // 2、獲取商品庫(自己創建商品數據) var database = client.GetDatabase("ProductDB"); // 3、獲取商品表(自己創建商品數) _products = database.GetCollection("Product"); } public Product GetProductById(string id) { return _products.Find(product => product.Id == id).FirstOrDefault(); } }

3.批量查詢
情況1:當客戶端通過電商微服務往MongoDB中查詢商品的時候,一個一個查詢,效率比較低,如何實現批量查詢?
方案:批量查詢
/// /// 商品控制器 /// [ApiController] [Route("Product")] public class ProductController : ControllerBase { private readonly IProductService _productService; public ProductController(IProductService productService) { _productService = productService; } /// /// 查詢商品列表 /// /// [HttpGet] public ActionResult> GetProducts() { return _productService.GetProducts().ToList(); } }
/// /// 商品服務實現 /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB連接 var client = new MongoClient("mongodb://localhost:27017"); // 2、獲取商品庫(自己創建商品數據) var database = client.GetDatabase("ProductDB"); // 3、獲取商品表(自己創建商品數) _products = database.GetCollection("Product"); } public IEnumerable GetProducts() { return _products.Find(product => true).ToList(); } }
4.分頁查詢
情況2:當客戶端通過電商微服務往MongoDB中查詢商品的時候,批量查詢很多數據,由于數據量過大,導致內存直接溢出。如何防止數據量過大,導致內存溢出的問題?
方案:分頁查詢
/// /// 商品控制器 /// [ApiController] [Route("Product")] public class ProductController : ControllerBase { private readonly IProductService _productService; public ProductController(IProductService productService) { _productService = productService; } /// /// 商品分頁查詢 /// /// /// /// [HttpGet("Page")] public ActionResult> GetProductsByPage(int Page ,int PageSize) { return _productService.GetProductsByPage(Page, PageSize).ToList(); } }
/// /// 商品服務實現 /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB連接 var client = new MongoClient("mongodb://localhost:27017"); // 2、獲取商品庫(自己創建商品數據) var database = client.GetDatabase("ProductDB"); // 3、獲取商品表(自己創建商品數) _products = database.GetCollection("Product"); } /// /// 商品分頁查詢 /// /// /// public IEnumerable GetProductsByPage(int Page,int PageSize) { var skip = (Page - 1) * PageSize; return _products.Find(x => true).Skip(skip).Limit(PageSize).ToList(); } }
5.數據刪除
分析:當客戶端通過電商微服務往MongoDB中添加商品的時候,數據量非常大,這個時候,客戶端希望能夠刪除商品,如何刪除商品?
方案:刪除商品
/// /// 商品控制器 /// [ApiController] [Route("Product")] public class ProductController : ControllerBase { private readonly IProductService _productService; public ProductController(IProductService productService) { _productService = productService; } /// /// 刪除商品 /// /// /// [HttpDelete] public IActionResult DeletetProduct(Product product) { try { _productService.Delete(product); } catch (Exception) { throw; } return NoContent(); } }
/// /// 商品服務實現 /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB連接 var client = new MongoClient("mongodb://localhost:27017"); // 2、獲取商品庫(自己創建商品數據) var database = client.GetDatabase("ProductDB"); // 3、獲取商品表(自己創建商品數) _products = database.GetCollection("Product"); } public void Delete(Product Product) { _products.DeleteOne(product => product.Id == Product.Id); } }
6.數據更新
分析:當客戶端通過電商微服務往MongoDB中添加商品的時候,商品添加錯誤,希望能夠修改商品,這個時候,客戶端希望能夠修改商品,如何修改商品?
方案:修改商品
/// /// 商品控制器 /// [ApiController] [Route("Product")] public class ProductController : ControllerBase { private readonly IProductService _productService; public ProductController(IProductService productService) { _productService = productService; } /// /// 修改商品 /// /// /// /// [HttpPut("{id}")] public IActionResult PutProduct(string id, Product product) { try { _productService.Update(id,product); } catch (Exception) { throw; } return NoContent(); } }
/// /// 商品服務實現 /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB連接 var client = new MongoClient("mongodb://localhost:27017"); // 2、獲取商品庫(自己創建商品數據) var database = client.GetDatabase("ProductDB"); // 3、獲取商品表(自己創建商品數) _products = database.GetCollection("Product"); } /// /// 更新 /// /// /// public void Update(string id, Product Product) { var update = Builders.Update; _products.UpdateOne(product => product.Id == id, update.Set("ProductTitle", Product.ProductTitle)); } }
.NET MongoDB 分布式
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。