sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan tvinger man mongo til at gemme medlemmer med små bogstaver?

For at bruge IMemeberMapConvention skal du sørge for at deklarere dine konventioner, inden kortlægningsprocessen finder sted. Eller slip eventuelt eksisterende kortlægninger og opret nye.

For eksempel er følgende den korrekte rækkefølge for at anvende 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ådan blev denne eksempelkonvention defineret:

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
}

Dette er resultaterne, der kom frem, da jeg kørte denne prøve. Du kunne se tekstegenskaben endte med at blive gemt som "NotText":



  1. Er Mongoose-forespørgselsresultat skrivebeskyttet?

  2. Multi-Field Querying på Redis ved hjælp af Redis Spring

  3. Aggregationssum i Spring Data MongoDB

  4. MongoDB $type Aggregation Pipeline Operator