MongoDB 当没有集合时,写入数据能否不自动创建集合,而是抛出异常。

问题描述

项目上遇到一个需求,首先是两条线:

  1. 一小时一次的全表更新,使用的全量写入备份表然后修改表名字的方式。
  2. 另一条线使用实时数据写入,一分钟写入一批次。

问题:当数据写入完成,开始修改表名时,实时数据写入会创建新的表,导致更换表名字时,抛出名称已存在异常。所有想请问各位大神,有没有办法,当数据库表不存在时,不自动创建表,而是抛出异常。

阅读 4.1k
1 个回答

没办法,因为隐式创建不存在的库和集合,这是 MongoDB 的 Feature 之一。

最初这个还被当作一个 Bug 上报了(参见 https://jira.mongodb.org/brow...),但官方原话是这么说的:

implicit creation of collections and DBs is a feature of the console and may not be disabled.

而且从你的问题描述上来看,你这是典型的多线程锁问题啊。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进