mongodb - 如何在使用 MongoTemplate 插入 MongoDB 之前修剪字符串?

标签 mongodb mongotemplate

基本上,我从另一个来源获取数据并创建我的数据库集合。但是有些数据最后有空格,后面用的时候前端会出问题。

在使用 spring mongoTemplate 配置/代码插入和更新到 MongoDB 之前,是否有一种通用的方法来修剪所有集合的所有 String 字段。

我不想为每种类型的集合及其中的每个字段编写特定的逻辑。此外,将此类逻辑放在数据库存储库级别是一种好做法吗?

最佳答案

尝试使用AbstractMongoEventListener .例如,创建您自己的 AbstractMongoEventListener 实现:

@Component
class SaveMongoEventListener extends AbstractMongoEventListener<Object> {

    @Override
    public void onBeforeConvert(BeforeConvertEvent<Object> event) {
        Object source = event.getSource();

        for (Field field : source.getClass().getFields()) {
            if (field.getType().isAssignableFrom(String.class)) {
                try {
                    String value = (String) field.get(source);
                    field.setAccessible(true);
                    field.set(value != null ? value.trim(): value, source);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

此实现将在将对象转换为 MongoDB 对象之前修剪对象中的所有字符串。监听器应该适用于您的所有收藏。不要忘记在 Spring 上下文中注册此监听器。

要在从 MongoDB 加载后修剪字符串,您应该在 onAfterConvert 中执行相同的操作事件。

关于mongodb - 如何在使用 MongoTemplate 插入 MongoDB 之前修剪字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49378931/

相关文章:

node.js - 架构无效,应为 `mongodb` 或 `mongodb+srv`

mongodb - Mongoose 说我有 46 条记录,mongoDB 说我有 0 条记录?

Spring Boot MongoDB 多数据库

java - 如何在spring的mongo模板中编写这个聚合查询

node.js - 使用 node.js 将文件流式传输到 mongodb

c# - 使用 .NET Driver 2.4 在 MongoDB 上验证用户

java - 如何在Java Spring的mongoTemplate聚合中实现$SetIsSubset?

spring - 在集合中查找元素,其中元素具有一个列表字段,并且给定值必须属于该列表

javascript - Mongo查询带日期的json对象

java - 如何在 mongodb 中更新外部数组列表时在内部数组列表中插入值?