2011-08-15 8 views
4

MongoDBをバックエンドとしてNode.jsにWebアプリケーションを開発しています。私が知りたいのは、一般的に受け入れられている手順があれば、初期コレクションを作成し、名前のホワイトリストや定義済み定数のリストなどの初期データを入れるためです。MongoDB + NodeJS Webアプリケーションの初期DB構造/データ

私が見たことから、MongoDBは、データがデータベースに挿入され、挿入されているコレクションがまだ存在していない場合、暗黙的にコレクションを作成します。これらの暗黙的な挿入がコレクションの作成を世話するのが標準ですか、あるいはMongoDBを使用する人は主要構造を構築し、必要な初期データを挿入するスクリプト設定を持っていますか? (例えば、MySQLを使用している場合は、データベースを一からダンプして再構築/再作成するために実行できる.sqlスクリプトが必要です)。

ありがとうございました。

MHY

答えて

2

データがある場合は、this post on SOがあなたのためにインターレスリングしている可能性があります。しかし、MongoはJavaScriptを理解しているので、あなたのためにデータを準備するスクリプトを簡単に書くことができます。

存在しないすべてのものを作成するのはモンゴーの性質です。これにより、タイプに制約されていないか、table xが存在するかどうかを確認してから作業する必要があるため、非常に柔軟で機敏な開発が可能になります。コレクションを動的に作成する必要がある場合は、コレクションをデータベースから取得して、コレクションが存在するかどうかに関係なく、コレクションを作成してください。

特定のオブジェクトを検索する場合は、ヌルオブジェクトを扱う場合にコードに影響を及ぼす可能性があるため、ヌルでないか特定のキーが存在するかどうかを確認してください。

+0

ありがとう:)私はそれがMongoを使うことの全面的な利点だと思います。 – mhy

+1

Mongoは必要に応じてデータベースとコレクションの作成を行いますが、Mongoアプリケーションの旧式の「ドロップ/作成」スクリプトの役割はまだあります。特に、ライブシステムでのインデックスの重要性とその作成コストについては、データが流入する前にインデックスを取得するためのcreateDatabase.jsスクリプトの作成を強くお勧めします。 –

0

あります絶対にコレクションやデータベースが表示されるようにするだけでセットアップスクリプトを使用する理由はありません。 DBとコレクションの作成は遅れて行われます。

MongoDBは完全にスキーマを持たないドキュメントストアなので、事前に特定のスキーマを設定する方法はありません。

mongoで提供されるデータベースコンテンツをダンプおよび復元するためのツールがあります。

アプリケーションで初期設定のデータ(設定パラメータやホワイトリストのようなもの)が必要な場合は、アプリケーションコンポーネントに必要に応じてデータを設定し、データ移行パスを提供することをお勧めします。

+0

ありがとう、私はモンゴにそれを世話させてくれると思う。アプリケーションコンポーネントに独自のデータを設定させることがどういう意味なのかよく分かりませんが、おそらく設定ファイルを1つまたは2つ保存することを意味します。 – mhy