MongoDB
Page content
Reference
mongoDBの構造
MongoDB
+--データベース
| +--コレクション
| | +--ドキュメント
| | +--ドキュメント
| |
| +--コレクション
| | +--ドキュメント
|
+--データベース
| +--コレクション
- 接続
$ mongo
- DB一覧
> show dbs
- DB作成, DB接続
> use test
- コレクションの一覧取得
- 今んとこ2パターン知ってる
> db.getCollectionNames() > show collections
- 今んとこ2パターン知ってる
- ドキュメントのinsert
> db.testcoll.insert( { "key1" : "string", "key2" : 123 } )
「db」は指定したデータベースを表し,「db.testcoll」でコレクションを指定しています。そして,このコレクションのメソッドである「insert()」を呼び出しています。
- もうひとつ、次はハッシュと配列の混ざったドキュメントを入れてみます。
MongoDBはスキーマレスですので,このようにいろいろなデータをドキュメントとして格納できます。> db.testcoll.insert( { "array" : [ "sun", "mon" , "tue" ] } )
ドキュメントの参照
ドキュメントの参照はコレクションのfind()メソッドを使います。
ドキュメント全部を参照
> db.testcoll.find() { "_id" : ObjectId("517decee15e3c1b8b1f82c5f"), "key1" : "string", "key2" : 123 } { "_id" : ObjectId("517dee5215e3c1b8b1f82c60"), "array" : [ "sun", "mon", "tue" ] }
最初のドキュメントのみ取得
> db.testcoll.findOne() { "_id" : ObjectId("517decee15e3c1b8b1f82c5f"), "key1" : "string", "key2" : 123 }
ドキュメントに対してハッシュキーを引数に渡すことにより,値を取り出すことができます。
> db.testcoll.findOne()["key1"] string
この文法はJavaScriptと同じです。 実はMongoDBはJavaScriptの実行環境を備えているため, JavaScriptと同じ文法を利用可能です。
ドキュメントの検索
> db.col1.find( { "name" => /mongo/ } )
databaseの削除: databaseに接続してからdropをする
> use dbname_to_be_deleted > db.dropDatabase()
collectionの削除
> db.mycollection.drop()
データの削除
> db.[コレクション名].remove( [削除するオブジェクト] )
の形式で実行します。 削除するオブジェクトを指定しない場合は、 コレクション内全てのデータが削除されます。
データの修正 update
> db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )
- : 検索条件。matchしたdocumentsをupdateの対象とする
- : the moddification to apply. $set
- upsert : if set to “true”, creates new document if no existing doc matches. Default = “false”
- multi : if set to “true”, apply modification to matched multiple docs. Default = “false”
- writeConcern: ???
updateの例:
- 修正対象: { “_id” : 11, “item” : “Divine Comedy”, “stock” : 2 }
- 実行: priceを18に。stockを+5する。
db.books.update( { item: "Divine Comedy" }, { $set: { price: 18 }, $inc: { stock: 5 } } )
WEB Consoleの紹介
- http://knd-test-george1.lab.mfeed.ad.jp:28017/syslog/cron.info/?filter_host=hop1
- こんなかんじに hostname:28017/DatabaseName/CollectionName/?filter_hogehoge として絞り込みなどできる
- hogehogeのfilter部分は、{ “host” : “hop1” } と同義
オブジェクトID MongoDBの各ドキュメントは、 _id という、 自分自身を識別するためのユニークキーを持っています。 この値は通常BSONオブジェクトです。
sort ソート 並んでいる順番(natural order)の逆順にする。 時刻などでやるほうが正確だが、この方が速いので、 ざっくり逆順に出したいときはこれ。
db.Hoge.find().sort({ $natural: -1 });
キーのrename 以下の様なレコードを大量に作ってしまった。 filterという名前のキーは微妙なので、markという名前に変えたい。
{ "_id" : ObjectId("51b6d0a4954e5d414a000602"), "facility" : "authpriv", "host" : "srv-perf1", "logtime" : "Jun 11 16:20:33", "filter" : "matched", "message" : "pam_unix(sshd:session): session closed for user munin", "pid" : "24366", "proc" : "sshd", "severity" : "info", "time" : ISODate("2013-06-11T07:24:19Z") }
- コマンド:
> db.syslog2.update({},{$rename:{"filter":"mark"}}, false, true);
出来た!ス・テ・キ c(`Д´c)