1. MongoDB の序文と紹介##最近統合中私自身のフレームワークでは、MongoDBD の最も単純な CRUD をコンポーネントとしてリファクタリングし、asp.net core プロジェクトに統合しました。もちろん、この記事では mongodb のクラスター展開については説明しません。機会があれば共有します。
まず、MongoDB の公式ドキュメントでは、MongoDb の 2.4 以降の .Net ドライバーが .Net Core 2.0 をサポートしていることがわかります。
MongoDB については、誰もがよく知っており、使用したことがなくても聞いたことがあると思います。
ASP.NET ビデオ チュートリアル#1. mongodb とは何ですか?
MongoDB は、分散ファイル ストレージに基づくデータベースです。Web アプリケーションにスケーラブルで高性能のデータ ストレージ ソリューションを提供します。リレーショナル データベースと非リレーショナル データベースの中間の製品です。リレーショナル: 最も機能が豊富なデータベース。データ処理のための強力なツールです。
2. リレーショナル データベースと非リレーショナル データベースとは何ですか?リレーショナル データベース: 私たちが使用した sqlserver や mysql などはすべてリレーショナル データベースであり、リレーショナル データベースは ACID 原則に従い、厳密な一貫性を持っています。
非リレーショナル データベース: NoSQL とも呼ばれ、非常に大規模なデータを保存するために使用されます。このタイプのデータ ストレージは固定モデルを必要とせず、冗長な操作なしで水平に拡張できます。
3. RDBMS VS NoSQLRDBMS:
高度に組織化された構造化データ
構造化クエリ言語
データとリレーションシップは別のテーブルに保存されます
厳密な一貫性
基本トランザクション
NoSQL:
宣言型クエリ言語なし
Key-値ペア ストレージ、列ストレージ、ドキュメント ストレージなど。
結果整合性
構造化されていない予測不可能なデータ
CAP 定理、高可用性、高パフォーマンス、高スケーラビリティ
この時点で、洞察力の鋭い学生は CAP 定理と結果整合性に気づき、間違いなく分散システムについて考えるようになるはずです。分散システムの nosql と完全に組み合わせることで、パフォーマンスを向上させることができます。
4. 誰もが理解できるように、RDBMS と Mongodb の概念をいくつか紹介します。
次のように翻訳します。
1. デモの便宜のために、私はダウンロードしましたmongodb サーバーの Windows バージョン
公式 Web サイトにアクセスして自分でダウンロードできます。ビジュアル インターフェイスには Robo 3T ツールを使用しました。非常にシンプルで美しい視覚化ツール。誰でも使えるのでおすすめです。
インストールが完了すると、Windows サービスに mongodb サーバーが表示されます。次に、Robo 3T を開いて mongodb に接続します。
2. プロジェクトで mongodb の構成を開始しましょう
最初のステップ: 新しい Core2 を作成します。 0 クラス ライブラリ
では、「MongoDB.Driver」nuget パッケージが導入されています。
次に、Startup.csの Services の拡張メソッドを拡張しました。//扩展方法public static class ServiceCollectionExtensions { public static void AddMongoDB(this IServiceCollection services, IConfiguration configuration) { services.Configure<Settings>(options => { options.ConnectionString = configuration.GetSection("MongoConnection:ConnectionString").Value; options.Database = configuration.GetSection("MongoConnection:Database").Value; }); } }
2 番目のステップ: mongodb をカプセル化する CRUD クラスをリファクタリングします。ここで自分でカプセル化し、表示するだけにすることもできます。検索して追加します。
public class MongoDBBase { private readonly IMongoDatabase _database = null; public MongoDBBase(string connectionString, string databaseName) { var client = new MongoClient(connectionString); if (client != null) { _database = client.GetDatabase(databaseName); } } #region SELECT /// <summary> /// 根据查询条件,获取数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="id"></param> /// <returns></returns> public List<T> GetList<T>(Expression<Func<T, bool>> conditions = null) { var collection = _database.GetCollection<T>(typeof(T).Name); if (conditions != null) { return collection.Find(conditions).ToList(); } return collection.Find(_ => true).ToList(); }#endregion #region INSERT/// <summary> /// 插入多条数据,数据用list表示 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list"></param> /// <returns></returns> public List<T> InsertMany<T>(List<T> list) { var collection = _database.GetCollection<T>(typeof(T).Name); collection.InsertMany(list); return list; } #endregion }
mongodb を appsetting.json に追加します。 project 接続文字列: ここではカスタム データ名 testdb を使用します。mongodb に挿入すると、データベース、コレクション、ドキュメントが自動的に作成されます。次に、下を見てください
"MongoConnection": { //mongodb数据库连接 "ConnectionString": "mongodb://127.0.0.1:27017", "Database": "testdb", "IsSSL": true },
ステップ 4: 新しい mongodb テスト コントローラーを作成し、単一および複数の項目を挿入してクエリを実行するためのインターフェイスを表示します。
[Produces("application/json")] [Route("api/MongoDB/[action]")] public class MongoDBController : Controller { private readonly MongoDBBase _context = null; public MongoDBController(IOptions<Settings> settings) { _context = new MongoDBBase(settings.Value.ConnectionString, settings.Value.Database); } [HttpGet] public IActionResult AddList() { List<MongoDBPostTest> list = new List<MongoDBPostTest>() { new MongoDBPostTest() { Id = "2", Body = "Test note 3", UpdatedOn = DateTime.Now, UserId = 1, HeaderImage = new NoteImage { ImageSize = 10, Url = "http://localhost/image1.png", ThumbnailUrl = "http://localhost/image1_small.png" } }, new MongoDBPostTest() { Id = "3", Body = "Test note 4", UpdatedOn = DateTime.Now, UserId = 1, HeaderImage = new NoteImage { ImageSize = 14, Url = "http://localhost/image3.png", ThumbnailUrl = "http://localhost/image3_small.png" } } }; try { _context.InsertMany(list); } catch (Exception ex) { throw; } return Ok("成功"); } [HttpGet] public Result<List<MongoDBPostTest>> SelectSingle() { //无条件 var list = _context.GetList<MongoDBPostTest>(); //有条件 //var list = _context.GetList<MongoDBPostTest>(a => a.Id == "1"); //得到单条数据,无条件 //var list = _context.GetSingle<MongoDBPostTest>(); //得到单条数据,有条件 //var list = _context.GetSingle<MongoDBPostTest>(a => a.Id == "3"); ObjectId internalId = _context.GetInternalId("5bbf41651d3b66668cbb5bfc"); var a = _context.GetSingle<MongoDBPostTest>(note => note.Id == "5bbf41651d3b66668cbb5bfc" || note.InternalId == internalId); return ResHelper.Suc(1, list, "成功"); } }
public class MongoDBPostTest { [BsonId] // standard BSonId generated by MongoDb public ObjectId InternalId { get; set; } public string Id { get; set; } public string Body { get; set; } = string.Empty; [BsonDateTimeOptions] public DateTime UpdatedOn { get; set; } = DateTime.Now; public NoteImage HeaderImage { get; set; } public int UserId { get; set; } = 0; } public class NoteImage { public string Url { get; set; } = string.Empty; public string ThumbnailUrl { get; set; } = string.Empty; public long ImageSize { get; set; } = 0L; }
ステップ 5: プロジェクトを実行して実行します。
複数のデータを挿入してみましょう。実行は成功します。
その後、データベースを調べたところ、データ コンテンツを含む testdb データベースが生成されていることがわかりました。
次に、次のクエリ操作を実行します。挿入したばかりのデータを返します。
注: ここで解決すべき落とし穴があります。それは、mongodb に保存されている時刻は UTC であるということです。時差は8時間です。したがって、ここでは特別な処理時間が必要になります。
3. 概要
この時点では、mongodb の簡単な使用法が示されています。後で、公式に従って拡張できます。ドキュメントを読み、さらに拡張してみると、ますます興味深いことがわかるでしょう。ご協力ありがとうございました。ありがとう。
以上がMongoDB を asp.net コアと統合するための完全な手順を学習します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。