c# - 如果数据库中不存在则插入,如果数据库中存在则不执行任何操作,如果列表中不存在则删除
问题描述
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 中不存在 - 插入;如果存在于数据库中而不是列表中 - 从数据库中删除。如何编写这个查询?
解决方案
推荐阅读
- android - Android:设置偏好意图不起作用
- c - 如何通过c中的套接字发送二进制数据?
- android - 方法调用语法问题
- spring-boot - JUnit 5 单元测试 Get 和 Post 方法
- node.js - 如何在 Azure 应用服务上创建可连接的 websocket 服务器?
- html - 尽管等待 `canplaythrough` 事件到 `play()`,但 HTML5 视频缓冲
- php - 对列“serialNo”的mysql查询只返回第一行
- c++ - size_t 的大小和对齐方式是否与 ptrdiff_t 相同?
- jquery - Ajax 调用 div 替换并滚动到页面顶部
- android - 当我尝试打开蓝牙时应用程序崩溃