sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur tvingar man mongo att lagra medlemmar med gemener?

För att kunna använda IMemeberMapConvention måste du se till att deklarera dina konventioner innan mappningsprocessen äger rum. Eller släpp eventuellt befintliga mappningar och skapa nya.

Till exempel är följande rätt ordning för att tillämpa en konvention:

        // first: create the conventions
        var myConventions = new ConventionPack();
        myConventions.Add(new FooConvention());

        ConventionRegistry.Register(
           "My Custom Conventions",
           myConventions,
           t => true);

        // only then apply the mapping
        BsonClassMap.RegisterClassMap<Foo>(cm =>
        {
            cm.AutoMap();
        });

        // finally save 
        collection.RemoveAll();
        collection.InsertBatch(new Foo[]
                               {
                                   new Foo() {Text = "Hello world!"},
                                   new Foo() {Text = "Hello world!"},
                                   new Foo() {Text = "Hello world!"},
                               });

Så här definierades denna exempelkonvention:

public class FooConvention : IMemberMapConvention

    private string _name = "FooConvention";

    #region Implementation of IConvention

    public string Name
    {
        get { return _name; }
        private set { _name = value; }
    }

    public void Apply(BsonMemberMap memberMap)
    {
        if (memberMap.MemberName == "Text")
        {
            memberMap.SetElementName("NotText");
        }
    }

    #endregion
}

Det här är resultaten som kom ut när jag körde det här provet. Du kunde se att textegenskapen slutade sparas som "NotText":



  1. SpringBoot Elasticache JedisMovedDataException:FLYTTAD

  2. Hur man hittar bara ett dokument med Restivus och Curl

  3. Låser MongoDB MapReduce databasen

  4. Hantera flera databasteknologier med ClusterControl