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

動的なMongodbコレクション

    MongoDB .NETドライバーは、このような場合にいくつかの可能性を提供します:

    ポリモーフィズム

    クラスの階層を構築でき、MongoDBドライバーは、データベースから取得するオブジェクトのタイプを判別できます。

    [BsonKnownTypes(typeof(Post), typeof(NewTypePost))]
    public abstract class PostBase
    {
        [BsonId]
        public string Id { get; set; }
    }
    
    
    public class Post: PostBase
    {        
        public string Message { get; set; }
    }
    
    public class NewTypePost: PostBase
    {
        public string Image { get; set; }
    }
    

    MongoDBドライバーは、追加のフィールド_tを作成します 対応するクラスを表すすべてのドキュメントで。

    シングルクラス

    あなたはまだPostを持つことができます クラスを作成し、BsonIgnoreIfNullを使用します シリアル化の例外を回避するための属性。 MongoDB .NETドライバーは、これらのプロパティをnullに設定します データベースに存在しない場合。

    public class Post
    {   
        [BsonId]
        public string Id { get; set; }
        [BsonIgnoreIfNull]     
        public string Message { get; set; } 
        [BsonIgnoreIfNull]
        public string Image { get; set; }
    }
    

    BsonDocument

    強く型付けされたアプローチを削除して、BsonDocumentを使用することもできます Mongoドキュメントを表す動的な辞書のような構造であるクラス

    var collection = db.GetCollection<BsonDocument>("posts");
    

    詳細こちら

    動的

    dynamicの指定 ICollectionのジェネリックパラメータとして ExpandoObject これにより、データベースにあるすべての値が保持されます。

    var collection = db.GetCollection<dynamic>("posts");
    var data = collection.Find(Builders<dynamic>.Filter.Empty).ToList();
    var firstMessage = data[0].Message; // dynamically typed code
    


    1. mongoose(mongodb)Alias_idフィールド

    2. Ubuntu 16.04/18.04へのRedisのインストール

    3. BSONSizeが無効なため、mongorestoreが失敗します

    4. MongoDBでグループ化してカウント