今回はシンプルなモデルを作成し、データベースへデータの挿入まで行っていきます。
モデル作成の前に、スキーマの定義が必要になります。書き方は下記の通りです。
//スキーマ定義・・・あるデータの形を定義したもの mongooseの中だけで使えるmongoDBとは無関係
const movieSchema = new mongoose.Schema({
title: String,
year: Number,
score: Number,
rating: String
});
※スキーマ・・・あるデータの形を定義したもの
例えば、文字列型のフィールドはString, 数値型のフィールドはNumber,
真偽型のフィールドはBooleanで定義していくものです。
次に、上記のスキーマを使って、モデル作成を行います。
const Movie = mongoose.model('Movie', movieSchema);
mongoose.modelでスキーマモデル名を指定してスキーマを作成します。
Mongoose では、モデル名の複数形の小文字バージョンを自動的に検索します。
なので第一引数は、モデルの対象となるコレクションの単数形かつ最初文字は大文字
の名前となります。第二引数は作成したスキーマ名となっています。
この時点ではクラスが出来上がったのみで、データベースには何も起きていません。
「Movieクラス」を使ってインスタンスが作成でき、データベースに保存することも可能
となります。
インスタンス・・・クラスから実際にオブジェクトを生成する為には、「new クラス名()」とします。
クラスから生成したオブジェクトをインスタンスと呼びます。
サンプルで一つインスタンスを作成してみます。
const amadeus = new Movie({ title: 'Amadeus', year: 1986, score: 10, rating: 'R' });
しかしこれではまだデータベースに保存はできていません。
ここから保存を行なっていきます。
nodeコマンドでREPLが開かれます。
「 .load ファイル名」で特定のファイルを読み込みます。
save()メソッドでデータベースへの保存ができています。
確認すると、データが挿入されています。

ひとまず完了です。
ここからは複数のデータを挿入できるようにしていきましょう。
今回は「 insertMany() 」を使っていきます。
Movie.insertMany([
{ title: 'Amelie', year: 2001, score: 8.3, rating: 'R' },
{ title: 'Alien', year: 1979, score: 8.1, rating: 'R' },
{ title: 'The Iron Giant', year: 1999, score: 7.5, rating: 'PG' },
{ title: 'Stand By Me', year: 1986, score: 8.6, rating: 'R' },
{ title: 'Moonrise Kingdom', year: 2012, score: 7.3, rating: 'PG-13' }
])
しかし、データベースへデータの挿入になると時間がかかります。
その場合、JavaScriptの世界では非同期処理について考えていきます。
早速追加で記述します。
// 複数ドキュメントを挿入
Movie.insertMany([
{ title: 'Amelie', year: 2001, score: 8.3, rating: 'R' },
{ title: 'Alien', year: 1979, score: 8.1, rating: 'R' },
{ title: 'The Iron Giant', year: 1999, score: 7.5, rating: 'PG' },
{ title: 'Stand By Me', year: 1986, score: 8.6, rating: 'R' },
{ title: 'Moonrise Kingdom', year: 2012, score: 7.3, rating: 'PG-13' }
]).then(data => {
console.log('成功');
console.log(data);
});
※一旦エラーについては無視します
「 node ファイル名 」 でjsファイルを実行します。
データベースを確認すると

複数のデータが追加されています。成功です。