今回は、
v2.
今回の内容は、
ひとつ前の安定バージョンであるv2.
新機能ダイジェスト
- 1. 全文検索機能
- ついにインデックス付きの全文検索機能が追加されました!
しかし、 日本語には対応していませんので注意してください。 - 2. 権限によるアクセスコントロール
- ロールを用いてユーザごとに読み込み権限、
書き込み権限をコントロールできるようになりました。 - 3. JavaScriptエンジンがV8へ
- デフォルトのJavaScriptエンジンが、
これまでのSpiderMonkeyの拡張版からV8へ変更されました。 - 4. GeoJSONによる地理空間インデックス
- 地理空間インデックスを用いてGeoJSONフォーマットのオブジェクトを取り扱うことが可能になりました。
- 5. ハッシュドシャードキー
- シャードキーにハッシュ化したフィールドを指定可能になりました。
- 6. その他の変更点
- 他にも細かな変更点があります。後ほど詳細に解説します。
全文検索機能
!注意
全文検索は実験的機能という位置づけです。リリースノートで、2.
MongoDBの全文検索は以下のような特徴を持っています。
- 複数のフィールドを重み付けし、
一括検索対象にできるScore Hit方式 - 検索クエリには正規表現が使用可能
- ステミングに対応
第7回丸の内MongoDB勉強会には全文検索機能に関してハンズオン資料がありますので併せてご覧ください。
権限によるアクセスコントロール
MySQLなどで権限
roles | 内容 |
---|---|
read | すべてのコレクションのデータを読み取り可能 |
readWrite | すべてのコレクションのデータを読み取りでき、 |
dbAdmin | インデックス作成、 |
userAdmin | system. |
clusterAdmin | レプリカセットやシャーディングの管理者オペレーションが可能 |
readAnyDatabase | adminデータベースを含めたすべての論理データベースを読み取り可能 |
readWriteAnyDatabase | adminデータベースを含めたすべての論理データベースを読み取りでき、 |
userAdminAnyDatabase | userAdminとしてユーザ管理を行い、 |
dbAdminAnyDatabase | dbAdminとしてデータベース管理を行い、 |
JavaScriptエンジンがV8へ
デフォルトのJavaScriptエンジンがこれまでのSpiderMonkeyの拡張版からV8へ変更され、
一方で、
JavaScriptエンジンはmongo shellからdb.
> db.serverBuildInfo()
またはinterpreterVersion()でも確認できます。
> interpreterVersion()
GeoJSONによる地理空間インデックス
MongoDBはv1.
以下のようなGeoJSONフォーマットでの表記が可能となり、
オブジェクト | 表記 |
---|---|
点(Point) |
|
線(LineString) |
|
多角形 |
|
また$geoIntersectsという新しいオペレーターが追加されました。$geoIntersectsを使うと、
たとえば、

P [ 20, 5 ]と交差しているオブジェクトの検索は、
> db.collection.find( { loc: { $geoIntersects: { $geometry: { "type": "Point", "coordinates": [ 20, 5 ] } } } } )
※ 今回は地理空間インデックスの作成手順は省略します。第7回丸の内MongoDB勉強会にはGeoJSONを用いたハンズオンが掲載されてます。
ハッシュドシャードキー
シャードキーをハッシュ化することで、
たとえば、

ハッシュ化とは、

シャードキーであるメールアドレスをハッシュ化することで、

このように、
その他の変更点
ケルベロス認証のサポート
WindowsのActive Directoryなどで使用されているケルベロス認証をサポートしました。ただし、
Map-Reduceと$whereオペレーターへ制限の追加
Map-Reduceと$whereオペレーターから、
db.killOp()がインデックス作成に対応
実行中のインデックス作成を、
$setOnInsertオペレーターの追加
$setOnInsertオペレーターを使用することで、
_id=1のドキュメントが無い場合、
> db.collection.update( { _id: 1 }, { $setOnInsert: { x: 25, y: 30 } }, { upsert: true } )
{ "_id" : 1, "x" : 25, "y" : 30 }
--setParameterオプションの追加
v2.
> use admin > db.runCommand( { setParameter: 1, logLevel: 2 } )
v2.
$ mongod --setParameter logLevel=2
確認はrunCommandからgetParameterを行います。
> use admin > db.runCommand( { getParameter: 1, logLevel: 1 } ) { "logLevel" : 2, "ok" : 1 }
次回のテーマ
MongoDB v2.
次回はMongoDBの機能のひとつである、