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

大文字と小文字を区別しないプロパティマッピング

    そのためには、2つの選択肢があると思います。

    1つ目は、クラスマップを手動で書き出すことです

    BsonClassMap.RegisterClassMap<MyClass>(cm => {
        cm.AutoMap();
        cm.GetMemberMap(c => c.Foo).SetElementName("foo");
    });
    

    2つ目は、次の属性でクラスを装飾することです

    public class MyObj
    {
        [BsonElement("id")]
        public int Id { get; set; }
        
        [BsonElement("foo")]
        public string Foo { get; set; }
    }
    

    CSharpドライバーチームには、次のリンクでシリアル化に関する優れたチュートリアルがあります

    http://docs.mongodb.org/エコシステム/チュートリアル/serialize-documents-with-the-csharp-driver/

    更新

    私は次のことを試しましたが、これは私にとってはうまくいきます。明らかに、これはコードのはるかに単純化されたバージョンであると確信していますが、どのように見えるかを推測しています。

    2つのクラスマップを別々に登録し、BsonKnownTypeを基本クラスに追加しました。

    [BsonKnownTypes(typeof(GeoJSONObject))]
    public class Point
    {
        public string Coordinates { get; set; }
    }
    
    public class GeoJSONObject : Point
    {
        public string Type { get; set; }
    }
    
    static void Main(string[] args)
    {
        var cn = new MongoConnectionStringBuilder("server=localhost;database=MyTestDB;");
        var settings = MongoClientSettings.FromConnectionStringBuilder(cn);
        var client = new MongoClient(settings);
    
        BsonClassMap.RegisterClassMap<Point>(cm =>
        {
            cm.AutoMap();
            cm.GetMemberMap(c => c.Coordinates).SetElementName("coordinates");                   
        });
    
        BsonClassMap.RegisterClassMap<GeoJSONObject>(cm =>
        {
            cm.AutoMap();
            cm.GetMemberMap(c => c.Type).SetElementName("type");
        });
    
        var result = client.GetServer()
                  .GetDatabase("MyTestDB")
                  .GetCollection("MyCol")
                  .Find(Query.EQ("type", BsonValue.Create("xxxx")));
    }
    


    1. マングースのfindOneAndUpdateとupsertはエラーを返さず、ドキュメントは影響を受けません

    2. MongoDB:サブドキュメントをアップサート

    3. 他のluaスクリプトで定義されているlua関数をredisで呼び出すことは可能ですか?

    4. tellsiteidの実行時にDjangoMongoDBエンジンエラーが発生しました