Обновить документ на MongoDb - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь обновить документ на mongodb. Документ, подобный следующему:

{
  "_id" : ObjectId("5ea10bb2b930115d186bf38c"),
  "restaurant" : "5e9ca5611abce13b6014b8ed",
  "Url" : {
    "idImage" : null,
    "Url" : null
   }
}

Я хочу обновить объект Url, но получаю сообщение «Ошибка обновления команды: обновление пути« Url. $. IdImage »приведет к конфликту ..».

Это мой текущий код:

        var user = await _context.Menu
                    .Find(filter)
                    .FirstOrDefaultAsync();

        var changesDocument = BsonDocument.Parse(input.ToJson());
        var firsElement = changesDocument.FirstOrDefault(x => x.Value != BsonNull.Value);

        UpdateResult result = null;
        if (user != null && firsElement.Value != null)
        {
            var update = Builders<MenuDto>.Update.Set(firsElement.Name, firsElement.Value);

            foreach (var item in changesDocument)
            {
                if (!item.Value.IsBsonNull && item.Name != "_id")
                {
                    if(item.Name != "restaurant")
                    {
                        var changesDocumentUrl = BsonDocument.Parse(item.Value.ToJson());
                        foreach (var value in changesDocumentUrl)
                        {
                            update = update.Set($"{item.Name}.$.{value.Name}", value.Value);
                            result = await _context.Menu.UpdateOneAsync(filter, update);
                        }
                    } else
                    {
                        update = update.Set(item.Name, item.Value);
                        result = await _context.Menu.UpdateOneAsync(filter, update);
                    }
                }
            }


            return result.IsAcknowledged;
        }

Как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...