考虑到以下情况,如何使用spark向mongo写信:
如果存在文档,只需使用较新的值更新匹配的字段,如果缺少该字段,则添加新字段(replacedocument参数if false将更新匹配的记录,但不会添加新的不匹配字段,而如果设置为true,我的旧字段可能会丢失。)
我想保持一个数据字段为只读,例如有两个字段,first\u load\u date和updated\u on。首次加载日期永远不会更改,它是在mongo中创建记录的日期,更新日期是添加新字段或替换旧字段的日期。
如果缺少文档,请插入。
主要问题是replacedocument=true将导致较新行中不存在的旧字段丢失,而false将处理匹配但现在是较新的传入字段。
我使用的是mongo spark连接器2.4.1
df.write.format("mongo").mode("append").option("replaceDocument","true").option("database","db1").option("collection","my_collection").save()
1条答案
按热度按时间nc1teljy1#
我理解你在这里想要达到的目标:你可以使用以下方法:
replacedocument设置为
false
将帮助您保存旧记录并更新匹配的记录,同时您可以获得BulkWriteException
其有序参数设置为false
会有帮助的。