【问题标题】:Initial DB structure / data for MongoDB + NodeJS web applicationMongoDB + NodeJS Web 应用程序的初始数据库结构/数据
【发布时间】:2011-10-27 03:22:24
【问题描述】:

我正在 Node.js 中开发一个以 MongoDB 作为后端的 Web 应用程序。我想知道的是,如果存在,用于创建初始集合并使用初始数据(例如名称白名单或预定义常量列表)填充它们的普遍接受的程序是什么。

据我所知,只要将数据插入数据库并且插入的集合不存在,MongoDB 就会隐式创建集合。让这些隐式插入来处理集合创建是标准的,还是使用 MongoDB 的人有脚本设置来构建主要结构并插入任何所需的初始数据? (例如,当使用 MySQL 时,我有一个 .sql 脚本,我可以运行它来从头开始转储和重建/重新填充数据库)。

感谢您的帮助。

MHY

【问题讨论】:

    标签: node.js mongodb database nosql


    【解决方案1】:

    如果您有数据,this post on SO 可能对您很感兴趣。但是由于 Mongo 了解 JavaScript,因此您可以轻松编写一个为您准备数据的脚本。

    Mongo 的本质是创造一切不存在的东西。这允许非常灵活和敏捷的开发,因为您不受类型的限制或需要在处理之前检查table x 是否已经存在。如果您需要动态创建集合,只需从数据库中获取它并在 if (无论它是否存在)下工作。

    如果您正在查找某个对象,请务必检查它(不为 null 或是否存在某个键),因为如果您使用 null 对象,它可能会影响您的代码。

    【讨论】:

    • 谢谢 :) 我想这就是使用 Mongo 的全部优势。
    • 我想评论一下,虽然 Mongo 会根据需要创建数据库和集合,但在 Mongo 应用程序中仍然有老式的“drop/create”脚本的作用。特别是,考虑到索引的重要性以及在实时系统上创建索引的成本,我强烈建议创建 createDatabase.js 脚本,以便在数据开始流入之前将索引到位。
    【解决方案2】:

    绝对没有理由仅仅为了使集合和数据库出现而使用设置脚本。数据库和集合的创建都是惰性完成的。

    请记住,MongoDB 是一个完全无架构的文档存储,因此甚至无法提前设置特定架构。

    有一些工具可用于转储和恢复 mongo 提供的数据库内容。

    现在,如果您的应用程序需要初始数据(如您建议的配置参数或白名单),通常最佳做法是让您的应用程序组件根据需要在其中设置自己的数据并提供数据迁移路径。

    【讨论】:

    • 谢谢,我想我会让 Mongo 来处理它。我不确定你让应用程序组件设置自己的数据是什么意思,但也许这意味着保留一两个配置文件......?
    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2018-09-27
    • 2017-07-18
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多