MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Съпоставяне на свойства без значение за малки и главни букви

Мисля, че ще имате 2 възможности за това.

Първото би било да напишете ръчно карта на класа

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

Второто би било да украсите класа си със следните атрибути

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

Екипът на драйверите на CSharp има добър урок за сериализация на следната връзка

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

Актуализация

Току-що опитах следното и това работи за мен, очевидно съм сигурен, че това е много по-опростена версия на вашия код, но предполагам как може да изглежда.

Регистрирах двете карти на класове отделно и добавих 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да върна само НЯКОИ полета ($project) от агрегирането на Mongodb, като същевременно използвам $match, $lookup И $filter

  2. Защо не мога да отстранявам грешки в кода в асинхронен метод?

  3. Проектирайте елемент, върнат с $arrayElemAt

  4. Mongodb - съответствие на регулярен израз на ключове за поддокументи

  5. Как да рестартирам условно веригата обещания от началото?