【问题标题】:Can mongo shell warn about operations on non-existing collections?mongo shell 可以警告对不存在的集合的操作吗?
【发布时间】:2014-03-17 09:50:54
【问题描述】:

我曾多次在集合名称中打错字或忘记将数据库切换到包含所需集合的数据库。 Mongo shell 默默地接受了所有这些命令。如果我尝试对不存在的集合执行查询,mongo shell 是否可能会警告我?

【问题讨论】:

  • 我认为除非你使用驱动程序是不可能的
  • 同意@anvarik,shell 不可能检测到您“未键入”的内容。无论如何,外壳只是一个“原型”实用程序,应该这样对待。各种驱动程序允许“安全”操作,以确保您的语句不会最终创建“新”集合。

标签: mongodb mongo-shell


【解决方案1】:

从 MongoDB 控制台,没有直接的方法可以防止您提到的场景。

您可以向某些数据库添加身份验证/授权,以帮助防止某些类型的意外操作。

MongoDb 的有意设计是延迟创建集合。

除非您编写了控制台启动脚本,否则您最终会进入test 数据库。

如果您使用控制台,则假定您拥有管理员控制权,并且了解直接操作的风险。在许多工作流程中,不存在的集合是完全正常的。

我建议您考虑评估用于管理 Mongo 数据库的众多 GUI 应用程序之一。

许多驱动程序都支持在使用前确认集合是否存在,如果指定的集合不存在,则会引发错误。

如果添加了该功能,则需要选择加入。

【讨论】:

  • 我同意例如插入操作应该创建一个集合,如果它不存在。如果查找查询没有返回任何结果,则相对容易注意到它有问题。但是,当我尝试执行更新时,我在几次尝试后才意识到没有更改的原因是集合名称错误。 BTW @WiredPrairie 你推荐哪个 Mongo GUI?我使用 MonjaDB,但是当我想一次更新多个文档时,我必须连接未针对集合存在验证的命令。
  • RE:图形用户界面。这取决于您真正使用的操作系统平台以及您对什么感到满意。 docs.mongodb.org/ecosystem/tools/administration-interfaces
  • 不幸的是,您尝试的 update 在 MongoDB 的设计上在技术上也是正确的。您可能想在此处尝试将其添加到他们的 MongoDB 功能/错误数据库中:jira.mongodb.org/secure/Dashboard.jspa。
  • 我刚刚在他们的问题跟踪器中创建了一个功能请求:jira.mongodb.org/browse/SERVER-13225
  • @LukaszWiktor 看看 RoboMongo,带有控制台支持的漂亮 UI
猜你喜欢
  • 1970-01-01
  • 2014-10-10
  • 2013-08-30
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多