MongoDB shellを使ってデータを更新していきましょう。
まずはDBの作成です。DBの切り替えや新規作成するには、useコマンドを使用します。
> use sample-mongo switched to db sample-mongo
この時点ではDBはまだ作成されません。次に、データを登録してみます。データ登録は、次の構文で行います。
db.<コレクション名>.insert({登録内容});
下記処理を実行すると、booksコレクションが作成されてドキュメントが登録されます。
> db.books.insert({_id:1,title:"MongoDBイン・アクション",price:100}) WriteResult({ "nInserted" : 1 })
> db.books.insert({_id:2,title:"JavaScriptリファレンス",price:300}) WriteResult({ "nInserted" : 1 })
ドキュメントの取得にはfindを使用します。次のようにすれば、全てのbookドキュメントが取得されます。
> db.books.find()
また、findでは条件を指定してドキュメントを取得することもできます。
> db.books.find({title:'MongoDBイン・アクション'})
さらに、比較演算子を使用して条件を指定することもできます。比較演算子を使用した条件指定方法は次のようになります。※次の構文は、上の処理と同じ意味になる
> db.books.find({title:{$eq:'MongoDBイン・アクション'}})
priceが150以上のドキュメントを抽出するには、$gte比較演算子を使用します。
> db.books.find({price:{$gte:150}}) { ・・ "_id" : 2, "title" : "JavaScriptリファレンス", "price" : 300 }
$gte以外にも、よく使用される比較演算子がいくつかあります。
== | $eq | 等しい |
---|---|---|
!= | $ne | 等しくない |
> | $gt | 右辺より大きい |
>= | $gte | 右辺以上 |
< | $lt | 右辺未満 |
<= | $lte | 右辺以下 |
比較演算子の詳細については下記リンクも参考にしてみてください。
次は更新処理も行ってみましょう。更新はupdateで条件と更新内容を指定します。
db.<コレクション名>.update({条件}, {更新内容})
次のようにすれば、「_id=2」のタイトルを変更します。
> db.books.update({ _id:2 }, { $set : { title: "JavaScript本格入門" } })
なお、updateの第3引数にtrueを渡すと、下記の場合にはinsert、そうでなければupdateという動作になります。
上のupdateで指定している「$set」とは、「update field operator」と呼ばれるものの一つで、存在するフィールドの値を設定します。$set以外にも、よく使用するupdate field operatorがあるので紹介します。
$inc | フィールドの値を、渡された数だけ増減させる |
---|---|
$rename | フィールド名を変更する |
$setOnInsert | update時に第3引数でtrueを指定して、処理がinsertで動作した場合に値を設定 |
$unset | フィールドを削除する |
$currentDate | 現在時刻を設定する |
update field operatorの詳細については下記リンクも参考にしてみてください。
ドキュメントの削除はremoveで行います。次の構文を使用すれば、条件に合うドキュメントを削除できます。
db.<コレクション名>.remove({条件})
では、「_id=2」のbookドキュメントを削除してみましょう。
> db.books.remove({ _id:2 })
なお、コレクションを削除するには、dropを使用します。
> db.books.drop() true
一通り操作の確認ができたので、exitコマンドでシェルを終了させましょう。
> exit bye
ここまではMongo shellを使ってドキュメントの操作を行いました。次に、Node.jsからMongoDBにアクセスしてみましょう。
MongoDBにNode.jsからアクセスするモジュールは複数あります。標準では「node-mongodb-native」というモジュールを使用すればアクセス可能ですが、本記事では「Mongoose」というツールを使用します。
Mongooseとは、MongoDB用モデリングツールで、Node.jsの非同期環境でうまく動作することを目的として設計されています。Mongooseを使用すれば、モデルを定義して操作することで、MongoDBのコレクション/ドキュメントを操作できます。
Mongooseの動作を試すための環境を作りましょう。適当な場所に「mongo-sample」ディレクトリを作り、そこでnpmを使用してMongooseモジュールをインストールします。
% mkdir mongo-sample && cd mongo-sample % npm install mongoose
Node.jsでMongooseを使う準備は、これだけでOKです。
次にMongoDBのデータベースを作成しましょう。Mongo shellで「book-store」という名前のデータベースを作成します。
% mongo //mongo shell起動 > use book-store switched to db book-store
Copyright © ITmedia, Inc. All Rights Reserved.