MongoDB2.6リリースノート斜め読み!
ご存知の通りMongoDB2.6がリリースされました!
相変わらず乱文で解説!!
Aggregation Enhancements
Aggregationが強化された。
- db.collection.aggregate() がカーソルを返却するようになった
- 今まで最終結果には64MBの制約があったが、解消されたようだ。
というかそれが普通。。。
- パイプラインがexplainをサポート
- 今までは感覚で是非を判断していたので嬉しい改善!
- ディスクソートが効率的になった
- $out オペレータで指定のコレクションに結果出力が可能
- 今までは結果をforで回して入れなおしてたのでこれも便利。
- $redact でパイプライン中にデータの微修正ができる
- あんまり使う機会が思い当たらない。。
多分この様な用途でMongoDBを使うこと自体が詰んでる。
新しいoperator
- $let, $map
- $literal, $size
- $cond
この辺りはまたいずれ。。
本当に大規模のデータを扱ったときにAggregationは非力なので、ちょっと便利に使いたい人向けの機能と思ってよい。
Text Search Integration
大丈夫。使い物にならない。
Insert and Update Improvements
consistency に関わる改善がある。
MongoDBはドキュメントの"フィールド"の順番を保つルールがある
- _id は常に先頭
- フィールド値の更新やリネームは順番が変わる場合がある
UPDATE系の新オペレータ
- $bit xor
- $min/$max update if max or min
- $push capped-array系(昔ここで解説した)に$position が追加
- $currentDate (説明不要)
- $mul multiplicative increments マニアック。。。
また少し便利になった!
New Write Operation Protocol
write concernの辺りのアップデート。結構重要。
- Ordered Operations
- 処理順を保障し、失敗があった時点で以降の処理を中止する。
Write operation: A => B => C => D Bが失敗した場合、C , Dはキャンセル 結果、Aだけが反映。
- Unordered Operations
- 順序性は無い。失敗があったオペレーションだけが影響を受ける
Write operation: A => B => C => D Bが失敗した場合、Bだけが影響を受ける 結果、A,C,Dが反映。