首页 > 解决方案 > 如果数据库中不存在则插入,如果数据库中存在则不执行任何操作,如果列表中不存在则删除

问题描述

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.SideEffectsx.SideEffects. 但是如果项目存在于数据库中 - 忽略;如果 db 中不存在 - 插入;如果存在于数据库中而不是列表中 - 从数据库中删除。如何编写这个查询?

标签: c#mongodb.net-core-2.2

解决方案


推荐阅读