sql >> Databáze >  >> NoSQL >> MongoDB

Jak donutit mongo ukládat členy malými písmeny?

Abyste mohli používat IMemeberMapConvention, musíte se ujistit, že jste deklarovali své konvence před tím, než proběhne proces mapování. Případně můžete stávající mapování zrušit a vytvořit nová.

Například následující je správné pořadí pro použití konvence:

        // 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!"},
                               });

Zde je návod, jak byla tato ukázková konvence definována:

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
}

Toto jsou výsledky, které vyšly, když jsem spustil tento vzorek. Mohli jste vidět, že vlastnost Text byla nakonec uložena jako "NotText":



  1. Atomicky přesuňte objekt podle ID z jednoho pole do druhého ve stejném dokumentu

  2. Potřebuji poradit s návrhem databáze v mongodb s mongoose

  3. Pomalý dotaz MongoDB:můžete vysvětlit proč?

  4. Aktualizujte pole MongoDB pomocí hodnoty jiného pole