2011-08-15 60 views
4

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

从我看到的情况来看,MongoDB隐式地创建集合,任何时候数据都被插入到数据库中,并且被插入的集合尚不存在。让这些隐式插入负责创建集合是否标准,或者使用MongoDB的人员是否具有构建主结构并插入所需的初始数据的脚本安装? (例如,使用MySQL时,我会有一个.sql脚本,我可以运行它来从头开始转储和重建数据库)。

谢谢你的帮助。

MHY

回答

2

如果您有数据,this post on SO可能会为您调整。但是由于Mongo了解JavaScript,您可以轻松编写一个脚本来为您准备数据。

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

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

+0

谢谢:)我想这是使用Mongo的全部优势。 – mhy

+1

我想评论一下,虽然Mongo会根据需要创建数据库和集合,但在Mongo应用程序中仍然存在老派“放置/创建”脚本的作用。特别是,考虑到索引的重要性以及它们在实时系统上创建的成本,我强烈建议创建createDatabase.js脚本以在数据开始流入之前获取索引。 –

0

绝对没有理由使用安装脚本仅仅使集合和数据库出现。数据库和集合创建都是懒惰地完成的。

重申,MongoDB是一个完全无模式的文档存储,因此无法提前设置特定的模式。

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

现在,如果您的应用程序需要初始数据(比如您建议的配置参数或白名单),那么最好让您的应用程序组件根据需要设置自己的数据并提供数据迁移路径。

+0

谢谢,我想我会让Mongo处理它。我不确定你的意思是让应用程序组件设置自己的数据,但也许这意味着要保留一个或两个配置文件......? – mhy