问题描述
项目上遇到一个需求,首先是两条线:
- 一小时一次的全表更新,使用的全量写入备份表然后修改表名字的方式。
- 另一条线使用实时数据写入,一分钟写入一批次。
问题:当数据写入完成,开始修改表名时,实时数据写入会创建新的表,导致更换表名字时,抛出名称已存在异常。所有想请问各位大神,有没有办法,当数据库表不存在时,不自动创建表,而是抛出异常。
项目上遇到一个需求,首先是两条线:
问题:当数据写入完成,开始修改表名时,实时数据写入会创建新的表,导致更换表名字时,抛出名称已存在异常。所有想请问各位大神,有没有办法,当数据库表不存在时,不自动创建表,而是抛出异常。
没办法,因为隐式创建不存在的库和集合,这是 MongoDB 的 Feature 之一。
最初这个还被当作一个 Bug 上报了(参见 https://jira.mongodb.org/brow...),但官方原话是这么说的:
而且从你的问题描述上来看,你这是典型的多线程锁问题啊。