Как массово удалить и переименовать элемент массива существует в списке документов mogo db из dotnetcore 2.0 - PullRequest
0 голосов
/ 31 мая 2018

У меня есть документ Mongo DB, как показано ниже

{
    name : Class1,
    section
    {
      A1,
      A2,
      A3, 
    }
}
{
    name : Class2
    section
    {
      A1,
      A2,
      A3, 
      A4,
    }
}
{
    name : Class3
    section
    {
      A1,
      A2,
      A3, 
      A4,
    }
}

Я хочу удалить А1 из всех классов, Чтобы добиться этого, я попробовал следующее, и он не работает

var entityCollection = _dbContext.GetCollection<TEntity>("class");
            var filter = Builders<TEntity>.Filter.Eq("section", "A1");
            var update = Builders<TEntity>.Update.Pull("section", "A1");
            var options = new UpdateOptions();
            await entityCollection.UpdateManyAsync(filter, update, options, cancellationToken);

Я хочу переименовать A4 в B1, для этого я попробовал следующее

 var entityCollection = _dbContext.GetCollection<TEntity>("class");
        var filter = Builders<TEntity>.Filter.Eq("section", A4);
        var update = Builders<TEntity>.Update.Set("section", B1);
        var options = new UpdateOptions();
        await entityCollection.UpdateManyAsync(filter, update, options, cancellationToken); 

Может ли кто-нибудь помочь мне выбраться из этого?Заранее спасибо.

1 Ответ

0 голосов
/ 31 мая 2018

Проблема решена путем изменения TEntity (сущность mongo db) на BsonDocument в коде, и для переименования я внес следующие изменения

var update = Builders<BsonDocument>.Update.AddToSet("section", B1);
var options = new UpdateOptions();
collection.UpdateManyAsync(filter, update, options, cancellationToken).ConfigureAwait(false);
var update2 = Builders<BsonDocument>.Update.Pull("section", A4);
collection.UpdateManyAsync(filter, update2, options, cancellationToken).ConfigureAwait(false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...