python 往MongoDB数据库中插入数据,经常会遇到的一个需求就是,对插入的数据进行去重。
最笨的方法呢,就是先把所有的数据插入数据库里,再去除掉多余重复的数据。具体操作呢,繁琐,复杂,效率低,还总容易出现莫名其妙的bug。
最理想的插入方法就是,如果数据库不存在,则插入数据;如果数据已经存在了,就不插入数据,或者更新数据。
使用insert方法,目前还没发现什么去重的好用处。 能够更新数据库的就是update()方法了。
update()方法需要两个参数,fileter,document, fileter 是更新条件, document是更新的内容。
要实现如果不存在就插入,如果存在就不插入的要求,我们需要用到 update的一个参数:‘$setOnInsert’
具体的操作方法可以参考九茶大神的这篇博客: https://blog.youkuaiyun.com/Bone_ACE/article/details/50696477
详细介绍了 $setOnInsert 方法的使用规则。
唯一不足的是,这里只有命令行模式下的规则,现在我们需要的是在python和MongoDB交互过程中使用$setOnInsert参数。
这个就是我们接下来的重点了。
python与MongoDB的交互方法和命令行下的MongoDB命令 差不了多少,原理相同,就是具体的方法可能有些差异。
update方法的源码具体如下:
$setOnInsert官方文档的介绍如下: