sql >> Database >  >> NoSQL >> MongoDB

Hoofdletterongevoelige eigenschapstoewijzing

Om dat te doen denk ik dat je 2 opties hebt.

De eerste zou zijn om handmatig een klassenkaart uit te schrijven

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

De tweede zou zijn om je klas te versieren met de volgende attributen

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

Het CSharp-stuurprogrammateam heeft een goede tutorial over serialisatie op de volgende link

http://docs.mongodb.org/ ecosysteem/tutorial/serialize-documents-with-the-csharp-driver/

Bijwerken

Ik heb zojuist het volgende geprobeerd en dit werkt voor mij, uiteraard weet ik zeker dat dit een veel vereenvoudigde versie van je code is, maar ik gok hoe het eruit zou kunnen zien.

Ik heb de twee klassenkaarten afzonderlijk geregistreerd en het BsonKnownType aan de basisklasse toegevoegd.

[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. resque-scheduler mislukt bij het verwijderen van de taak

  2. Voeg een veld toe aan een bestaand MongoDB-document (met Mongoose in Node.js)

  3. tar gzip mongo dump zoals MySQL

  4. Direct verbinding maken met Redis met (client side) javascript?