Вставить, если не существует в БД, ничего не делать, если существует в БД, и удалить, если не существует в списке - PullRequest
0 голосов
/ 27 января 2019
public class Ingredient
{
    [BsonId]
    public ObjectId IngredientId { get; set; }
    public bool IsActive { get; set; }
    public List<IngredientSideEffectItem> SideEffects { get; set; } 
}

public class IngredientSideEffectItem
{
    public ObjectId SideEffectId { get; set; }
    public long Counter{ get; set; }
}


public async Task UpdateIngredient(Ingredient s)
{
    FilterDefinition<Ingredient> filter = 
        Builders<Ingredient>.Filter.Eq(l => l.IngredientId, , s.IngredientId);
    UpdateDefinition<Ingredient> update = 
        Builders<Ingredient>.Update
            .Set(x => x.SideEffects, s.SideEffects)
            .Set(x => x.IsActive,s.IsActive) 

    UpdateResult result = await db.Ingredients.UpdateOneAsync(filter, update);
}

Я хочу вставить элементы s.SideEffects в x.SideEffects. Но если элемент существует в БД - игнорировать; если не существует в db - вставить; и если существует в БД, а не в списке - удалить из БД. Как написать этот запрос?

...