在插入数据的时候,如果map key中包含.,会导致mongodb发生错误。因此需要替换key中的.。会导致错误的数据如:

{"A.b": "dfsf"
}

解决方法:添加配置类

/*** @auther kelly* @since 2021/5/18* key中如果有英文小数点使用时会替换成正则表达式;*/
@Configuration
public class MongoConfig {@Autowiredprivate MappingMongoConverter converter;@PostConstructpublic void setUpMapKeyDotReplacement(){converter.setMapKeyDotReplacement("-\\*dot\\*-");}
}

需要注意的地方

mapKeyDotReplacement会在发生convert的两个地方用到。写入和读取。写入时,利用string的replaceAll通过正则表达式替换掉key中的所有的.。读取时,也是利用正则表达式,将mapKeyDotReplacement替换成.。因此需要注意的是mapKeyDotReplacement中如果有正则表达特殊字符需要转义(如解法方法中的\\*

按照解决方法所给的-\\*dot\\*-的字符串替换,预计mongoDB里边存储的key应是-\*dot\*-。但实际却是-*dot*-。这与mongo对转义字符的处理有关。

如果是非法的转义字符,如\*,\m等,会直接删除忽略掉\

解决springboot中Map集合key中不能使用英文小数点问题相关推荐

  1. 在java商城开发中map集合的应用

    在java商城开发中map集合的put方法(Object key, Object value)添加一个"值"(想要得东西)和与"值"相关联的"键&qu ...

  2. java 中map_Java中Map集合

    1. Java中Map集合 1. Map中value可以重复,key不能重复.对于重复的key值来说,后放置的值对覆盖前放置的值. import java.util.HashMap; public c ...

  3. java map遍历_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  4. java中两种遍历集合的方式_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  5. containskey java_Java Map.containsKey()方法:判断Map集合对象中是否包含指定的键名

    搜索热词 Java 集合类中的 Map.containsKey() 方法判断 Map 集合对象中是否包含指定的键名.如果 Map 集合中包含指定的键名,则返回 true,否则返回 false. 语法: ...

  6. java对list中map集合中某个字段排序

    java对list中map集合中某个字段排序 适用于字符串排序,数字对比不可用,以下示例,当把sort的值改为74,66,142时排序不对看示例2 示例1 List<Map<String, ...

  7. Java中Map集合如何理解(四)——精简

    目录 引言 概念 Map集合实现类 HashMap LinkedHashMap TreeMap 默认排序 自定义排序方式 常用API 遍历Map集合 键找值 键值对 Lambda表达式 结束语 引言 ...

  8. JAVA中Map集合的使用举例

    首先创建一个Emp类,再将几个Emp对象添加到Map集合中. Emp的id作为Map的键,并将id为"005"的对象从集合中删除. package com.han;import j ...

  9. java中map集合的修改_map集合修改其中元素(示例代码)

    packagecom.swift.lianxi;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importj ...

最新文章

  1. 一文完全理解定时器实现技术
  2. Sql查询一个列对应多个列
  3. android retrofit入门,Android开发 retrofit入门讲解
  4. yii2 basic版 MVC 部分
  5. 图像颜色迁移《color transfer between images》
  6. 仿花生小说蓝色小说网站导航网站源码
  7. 《Android开发从零开始》——26.数据存储(5)
  8. 如何使用Windows OVERLAPPED优化你的应用
  9. error LNK2005: void * __cdecl operator new(unsigned int) (??2@YAPAXI@Z) already defined in LIBCMT.
  10. 如何在windows server 2008上配置NLB群集
  11. 软件架构发展的几个阶段
  12. RAID (HP)双循环
  13. Java精品源码第83期在线旅游网站系统(推荐)
  14. 蓝桥杯,基础练习 Fibonacci数列(斐波那契数列) C++
  15. 电影《五十度灰》主题曲《Love me like you do》——尽你所能爱我Ellie Goulding(埃利·高登)——【英文小清新歌曲推荐】
  16. 大学物理实验空气比热容比的计算
  17. dfuse for EOSIO 架构剖析:架构总览
  18. 路由在电话网和计算机网中的区别,光猫能替代路由器吗 光猫和路由器有什么区别【详解】...
  19. 剪不断理还乱的前端和交互
  20. 第十五天 11-常见的网络相关命令

热门文章

  1. 信息学奥赛一本通:2072:【例2.15】歌手大奖赛
  2. 数学公式中的侧m 求和符号∑详解
  3. Qt pushbutton设置icon和文字
  4. 测试人员如何保证业务安全性?
  5. GDOI2016口胡题解
  6. 空闲时间可以做些什么赚钱、推荐几个业余时间做的兼职副业
  7. [英语,iOS]美式英语语音语调基础
  8. 我用ChatGPT写2023高考语文作文(六):北京卷II
  9. Mac:打印暂停问题
  10. 【CSS】1035- 再看 margin 塌陷和合并问题