sql >> データベース >  >> NoSQL >> MongoDB

MongoDbはジェネリック型(クラス)をシリアル化します

    確かにすべてのドキュメントを1つのコレクションに保存できますが、長期的には、コレクションに1つのタイプのみを保存する方が簡単でクリーンです(C#の観点から)。これを行うには、MongoDatabaseでExtensionメソッドを使用してクラスを作成します。

    public static class MyDatabase
    {
        public static MongoCollection<T> GetCollection<T>(this MongoDatabase db)
        {
            var name = typeof(T).Name;
            return db.GetCollection<T>(name);
        }
    }
    

    次に、タイプを指定してGetCollectionを呼び出すだけで、名前は一般的なコードから非表示になります。このようなものを作成して、物事をもう少し抽象化することもできます:

    public class MyDatabase
    {
        private MongoDatabase _db;
    
        public MyDatabase(MongoDatabase db)
        {
            _db = db;
        }
    
        public MongoCollection<object> Objects
        {
            get
            {
                return _db.GetCollection<object>();
            }
        }
    }
    

    これであなたはただすることができます

    var client = new MongoClient();
    var server = client.GetServer();
    var db = server.GetDatabase("MyDb");
    var myDb = new MyDatabase(db);
    myDb.Objects.Find();
    

    このFind Objectsに対して実行するようにマップされます コレクション、<object>を置き換えるだけです タイプを指定して、コレクションに名前を付けます。




    1. MongoDBで特定の配列要素を更新する方法

    2. MongoDBは、c#のドキュメントから一致するサブドキュメントのみを取得します

    3. StackExchange.Redisは複数のエンドポイントと接続をどのように使用しますか?

    4. Dockerを使用したMongoDBのデプロイ