Mongooseを使ってみる

Mongooseを使ってMongoDBに接続してみます。

* はじめに
* インストール
* 解説


はじめに

node.jsからMongoDBに接続してみましょう。今回は、elegant mongodb object modeling for node.js (MongoDBをオブジェクトモデル化しちゃうぞ)ツールことMongooseモジュールを使ってみます。
なお、現時点でのバージョンは4.4.14です。


インストール

まずはMongoDBをインストールします。OS X向け もしくはWindows向けいずれかを参考に、起動までさせてみてください。次にパッケージを管理する(npm)を参考に、作業用ディレクトリを作っておいてください。
5月になったのでsatsukiにでもしますか。

$ mkdir satsuki
$ cd satsuki/

では、Mongooseのインストールです。

$ npm install mongoose

解説

公式サイトには、簡単かつ動きがよくわかるサンプルが掲載されています。
このままコピーして、さっき作ったsatsukiディレクトリ内に任意の名前(例えばsatsuki.js)で保存しましょう。
で、node satsuki.jsコマンドで起動させてみましょう。鳴いてくれれば成功です。
>

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Cat = mongoose.model('Cat', { name: String });
var kitty = new Cat({ name: 'Zildjian' });
kitty.save(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log('meow');
  }
});
var mongoose = require('mongoose');

Node.jsにおいてモジュールを呼び出す際の構文です。’mongoose’モジュールを呼び出しています。

mongoose.connect('mongodb://localhost/test');

いきなりMongoDBに接続しにいってますね。これだけの構文でlocalhosttestデータベースに接続できます。

var Cat = mongoose.model('Cat', { name: String });

この行がいわゆる「オブジェクトモデル化」のキモの部分で、若干ハードルの高い部分だと思います。正直筆者も完全には理解できていませんが…
Mongooseでは、まずオブジェクト(今回はCat)を作成し、このオブジェクトを使ってデータの操作を行います。
また、{ name: String }の部分でスキーマを定義しています。

var kitty = new Cat({ name: 'Zildjian' });

Catオブジェクトを元にしてkittyインスタンスを作成しています。オブジェクト指向プログラミングをかじった方にはイメージがつきやすいと思いますが。

kitty.save(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log('meow');
  }
});