首页 > 解决方案 > 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 下的所有内容。

标签: javamongodbspring-data

解决方案


我最终做的是在获取更新评论之前过滤掉任何没有要更新的字段的调用。


推荐阅读