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

Проектиране към друг тип с помощта на C# SDK

Намерих начина да изпълня картографирането, което искате:

collection
    .Find(Builders<MyType>.Filter.AnyIn(x => x.Documents, new[] { "c" }))
    .Project(Builders<MyType>.Projection.Exclude(c => c.Documents))
    .As<MySubType>()
    .ToList();

Но първо трябва да регистрирате картографиране за вашия подтип, като игнорирате допълнителен елемент. Не го разбирам на 100%, изглежда, че е грешка в драйвера, не получава Documents от mongo, но знае, че MyType има такова имущество. Имайте предвид, че трябва да регистрирате картографирането на вашия клас преди първо създавате колекция от този тип.

if (!BsonClassMap.IsClassMapRegistered(typeof(MySubType)))
{
    BsonClassMap.RegisterClassMap<MySubType>(cm =>
    {
        cm.AutoMap();
        cm.SetIgnoreExtraElements(true);
    });
}

Направих го с примерни данни:

var toInsert = new List<MyType>
{
    new MyType {Id = 1, Name = "bla", Documents =new List<string> {"a", "b", "v"}},
    new MyType {Id = 2, Name = "ada", Documents =new List<string> {"c", "d", "r"}},
};

И може да получи очаквания резултат:

collection
    .Find(Builders<MyType>.Filter.AnyIn(x => x.Documents, new[] { "c" }))
    .Project(Builders<MyType>.Projection.Exclude(c => c.Documents))
    .As<MySubType>()
    .ToList()
    .Dump();




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Първи стъпки с нерелационни бази данни с помощта на Mongodb 🍃

  2. brew install mongodb грешка:Страхлив отказ да `sudo brew install' Mac OSX Lion

  3. MongoDB Kafka Sink Connector не обработва процесора RenameByRegex

  4. MongoDb заявка за сума

  5. Как да обобщим сумата в MongoDB, за да получите общ брой?