在用C++对MongoDB执行update操作的时候,如果设置了upsert参数为true,则会自动插入不存在的数据。在高并发环境下,会导致数据重复。
解决方法是为查询条件添加unique index, 参考官方文档:
http://docs.mongodb.org/manual/core/write-operations-atomicity/
http://docs.mongodb.org/manual/core/index-unique/#index-type-unique
经过高压测试后,证明这个解决方案是靠谱的。
原文:http://blog.csdn.net/csfreebird/article/details/43453197