Java 由于多次创建/更新请求而多次插入同一文档

Java 由于多次创建/更新请求而多次插入同一文档,java,mongodb,Java,Mongodb,假设mongo中有一个事件生成器代码来创建/更新文档,并且同时生成了多个事件。 Mongo收到了这些事件,并使用相同的数据创建了多个文档。 有没有办法防止这种情况发生???您可以创建一个唯一的索引,以防止插入重复数据。请注意,检查文档是否不存在并不能解决问题,因为您需要事件同时发生,而不会导致数据不一致或冲突。创建唯一索引将解决您遇到的竞争条件问题 参考:您可以创建一个唯一的索引,以防止插入重复数据。请注意,检查文档是否不存在并不能解决问题,因为您需要事件同时发生,而不会导致数据不一致或冲突。创

假设mongo中有一个事件生成器代码来创建/更新文档,并且同时生成了多个事件。 Mongo收到了这些事件,并使用相同的数据创建了多个文档。
有没有办法防止这种情况发生???

您可以创建一个唯一的索引,以防止插入重复数据。请注意,检查文档是否不存在并不能解决问题,因为您需要事件同时发生,而不会导致数据不一致或冲突。创建唯一索引将解决您遇到的竞争条件问题


参考:

您可以创建一个唯一的索引,以防止插入重复数据。请注意,检查文档是否不存在并不能解决问题,因为您需要事件同时发生,而不会导致数据不一致或冲突。创建唯一索引将解决您遇到的竞争条件问题


参考资料:

您可以在这里做一些事情。我能想到的两个最明显的选项是检查文档是否已经存在,或者运行create/update命令,如果文档已经存在,则更新该文档;如果文档不存在,则仅创建该文档。另一个选项:为文档提供反映其身份的ID,并使用
insert
向上插入
选项,因此如果它存在则更新,如果不存在则插入。如果您有反映身份的ID,当然也可以在插入之前检查文档是否存在。我能想到的两个最明显的选项是检查文档是否已经存在,或者运行create/update命令,如果文档已经存在,则更新该文档;如果文档不存在,则仅创建该文档。另一个选项:为文档提供反映其身份的ID,并使用
insert
向上插入
选项,因此如果它存在则更新,如果不存在则插入。如果您有反映身份的ID,当然也可以在插入之前检查文档是否存在。