MongoDB 批量更新/插入 即批量save或批量upsert 遇到的问题和解决方案

本文讲述了在使用MongoDB进行批量更新和插入操作时遇到的问题,包括没有使用$set导致的异常、List<Object>序列化错误以及数字转换问题。通过反射工具处理字段赋值,将List<Object>转换为JSONString,以及调整fastjson的配置来避免数字转换为BigDecimal,成功解决了这些问题。同时,提出了对于upsert操作无法指定id的疑惑,并计划探索如何在插入时指定id以及更新时不更新id的方法。
摘要由CSDN通过智能技术生成

MongoDB 批量更新/插入 即批量save或批量upsert 遇到的问题和解决方案

  1. 批量更新工具类完成
  2. 批量更新整个对象时候,因为没有$set符号导致异常,因此做了反射工具,再遍历字段去调用Update.set(k,v) 的方式去给字段赋值。(排除的字段目前是写死的,后续可以做成可配置)
  3. 批量更新时,对象有个属性是List< Object > 这个列表内的对象在插入时报错,说无法序列化:
java.lang.RuntimeException: json can't serialize type : class com.sy.sync.entity.po.mongo.ShopEntityBackTrackInfo$ReportGoods
	at com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:77) ~[mongo-java-driver-2.14.3.jar:?]
	at com.mongodb.util.JSONSerializers$IterableSerializer.serialize(JSONSerializers.java:292) ~[mongo-java-driver-2.14.3.jar:?]
	at com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:79) ~[mongo-java-driver-2.14.3.jar:?]
	at com.mongodb.util.JSONSerializers$MapSerializer.serialize(JSONSerializers.java:319) ~[mongo-java-driver-2.14.3.jar:?]
	at com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:79) ~[mongo-java-driver-2.14.3.jar:?]
	at com.mongodb.util.JSONSerializers$MapSerializer.serialize(JSONSerializers.java:319) ~[mongo-java-driver-2.14.3.jar:?]
	at com.mongodb.util.ClassMapBasedObjectSerializer.serialize(ClassMapBasedObjectSerializer.java:79) ~[mongo-java-driver-2.14.3.jar:?]
	at com.mongodb.util.JSONSerializers$MapSerializer.serialize(JSONSerializers.java:319) ~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值