MongoDB
MongoDBでは、任意のフィールドを好きな時にクエリできる。フィールドの完全一致に加えて、範囲をもつクエリ、正規表現検索など様々な種類のクエリが使える。ユーザ定義のJavaScript関数を述語として使うこともできる(関数がtrueを返したときにドキュメントがマッチする)。
クエリでは、(全フィールドをとりだす代わりに)指定したフィールドだけを取り出せる。また、ソートを行ったり、結果の数を制限したり、一部をスキップすることもできる。
MongoDBは、Cappedコレクションと呼ばれる固定サイズのコレクションもサポートしている。Cappedコレクションはサイズ(オプションで要素数も使える)を指定して作成される。capped collectionsは、挿入した順にコレクションを管理する: 指定したサイズに到達したら、古いものから順に削除される。
Cappedコレクションでは、tailable cursorと呼ばれる特殊なカーソルを利用できる。このカーソルの名前は tail -f に由来し、結果を返し終えてもクローズせずに待機し続けて、それ以降に追加されたドキュメントを返却しつづける。
データの可視化を助けるいくつかのGUIが開発されている:
Fang of Mongo - DjangoとjQueryで作られたWebベースのUI
Futon4Mongo - CouchDBのFuton Webインタフェースのクローン
Mongo3 - Rubyベースのインタフェース
MongoHub - MongoDBを管理するためのネイティブなmacOSアプリケーション
Opricot - PHPで書かれたWebベースのMongoDBシェル
Database Master - WindowsベースのMongoDB管理ツール。RDBMSもサポートする
BI Studio - WindowsベースのMongoDB管理ツール。RDBMSもサポートする
RockMongo - PHPベース
Robo 3T (旧 Robomongo) - mongo shellを内蔵したクロスプラットフォーム(Windows, Mac, Linux)なMongoDB管理ツール
MongoDB(モンゴDB)は、ドキュメント指向データベースである。開発とサポートはMongoDB Inc.が行なっている。ソースアベイラブルのServer Side Public License(英語版) (SSPL) で提供されている。
MongoDBはRDBMSではなく、いわゆるNoSQLと呼ばれるデータベースに分類されるものである。RDBMSのようにレコードをテーブルに格納するのではなく、「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合を「コレクション」として管理する(このデータの物理的な格納はBSONと呼ばれるJSONのバイナリ版といえる形式で行われる)。コレクションはRDBMSのような固定的なスキーマを持たない。ドキュメントには複雑な階層構造を持たせることもでき、それらの構造に含まれるフィールドを指定したクエリやインデクス生成も簡単な指定によって行える。RDBMSのように高度な結合操作を効率的に行うことはできないが、データの追加・更新・削除・クエリは高速に行うことができる。また、アプリケーションは自身の構造やデータ型に合った自然な形でデータを格納することができるため、扱うデータの特性によっては、RDBMSよりも容易かつ迅速に開発を行える可能性がある。