java - MongoOperations - upsert/findAndModify 删除 mongo 中的所有字段
问题描述
我正在尝试使用 MongoOperarions,并且方法 upsert 仅更新/创建更新参数中存在的那些字段。但是,每当我发送一个要更新的空字段列表时,它都会删除数据库中的所有其他字段,这是唯一剩下的“我要”字段你们知道避免这样做的方法吗? 理想情况下,我希望它只是告诉我什么都没做,而不是删除所有内容。
编辑 1
这就是我的代码的样子:
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
final Update update = new Update();
fields.entrySet().stream()
.forEach(entry->{
if(entry.getValue()!=null)
update.set(entry.getKey(),entry.getValue());
});
return mongoOperation.findAndModify(query,update,Destination.class);
如您所见,我正在使用$set
操作进行更新。在我的场景中发生的情况是,更新变量没有要更新的对字段值,它最终会删除给定 ID 下的所有内容。
解决方案
我最终做的是在获取更新评论之前过滤掉任何没有要更新的字段的调用。
推荐阅读
- sql - 跨不同表的多个 SELECT UNION 语句
- angular - 如何仅在一个组件 Angular 项目中离线使用引导轮播
- node.js - 嗨,我正在节点中制作图像大小调整 api 并使用Sharp 表示
- python - 查询在某个日期范围内创建的 Twitter 个人资料?
- python - 使用 .append 将列表附加到字典时出错
- c# - C#:如何在我的 PC 上列出与任务管理器相同的工作进程(不像应用程序选项卡)
- python - 在 csv 文件中查找 Word 并使用循环实现它
- amazon-web-services - 多实例cpuutilization告警,数据不足
- javascript - preventDefault() 不适用于单击事件处理程序上的 window.location.hash
- javascript - 如何从动态元素中获取文本?(禁用/启用 Javascript?)