9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MongoDBAdvent Calendar 2013

Day 19

リリース間近!MongoDB 2.6のリリースノート翻訳: 新登場のWrite Commandたち

Last updated at Posted at 2013-12-19

MongoDB Advent Calendarの穴埋め用投稿です。

そろそろリリースされそうなMongoDB 2.6のリリースノートの一部を翻訳しました。今回は大きな機能追加があった書き込み処理についてです。
注: MongoDBでは2.5.xは開発バージョンで、2.6.xがリリースバージョンとなります。

他の翻訳

はじめに: 新登場のWrite Commands

MongoDB 2.6では、db.runCommandを使った新しい形式で書き込み処理(insert, update, delete)ができるようになりました。

例えば、runCommandを使ってinsertを行うコマンドはこのようになります。

db.runCommand(
   {
      insert: “people”,
      documents: [ { name: "Sam", state: "active" } ],
      ordered: false,
      writeConcern: { w: 1 }
   }
)

変更点

  • オプションが指定できるようになりました。例えば、これまではドライバ経由でしか指定できなかったwriteConcern(書き込み保証レベル)が指定できます。
  • 実行後、特に失敗時に詳細なステータスがリターンされるようになりました。

ところで、従来のdb.{collection}.insert()はどうなったかというと、特に削除されている訳ではなく、使えます。ただし、中身は大きく変わっています。

mongoシェルでdb.{collection}.insert()を外して実行すると、functionの定義が確認できますが、2.4.xと2.5.xでは大きく変わっています。

それではリリースノートの翻訳に入ります。

元のリリースノートはこちら
http://docs.mongodb.org/master/release-notes/2.6/


目次

書き込みオペレーションの変更点

  • 新しい書き込み系コマンド
  • 新しいUpdateオペレーター
  • $mul Updateオペレーター
  • xor演算を使用した$bitオペレーター
  • $min Updateオペレーター
  • $max Updateオペレーター
  • $currentDate Updateオペレーター
  • $push UpdateオペレーターのためのModifiersのエンハンス
  • $each Modifierの変更
  • $sort Modifierのエンハンス
  • $slice Modifierのエンハンス
  • $position Modifire

新しい書き込み系コマンド

新しいinsert, update, deleteコマンドがサポートされました。これらのコマンドは明示的に書き込み保証レベル(write concern)を指定でき、複数ドキュメントのバルクインサートにおいて、どれか一つが失敗しても継続するように指定できます。

詳細情報:

バージョン2.5.4、またはそれ以降のMongoDBインスタンスにmongoシェルで接続した場合、デフォルトで新しい書き込みオペレーションが使われます。
訳注: db.{collection}.insert()でもrunCommandと同様に、新しい書き込みオペレーションが使われます。

以前のバージョンのMongoDBインスタンスに接続した場合は、従来の書き込みオペレーションを使用します。

MongoDB, Inc.が開発している各言語用の公式なMongoDBドライバは、バージョン2.6のリリース前に新しい書き込みコマンドをサポートします。詳細については使っているドライバのリリースノートを参照してください。

新しいUpdateオペレーター

書き込み系と同じく、更新系のオペレーターも追加/変更されました。

$mul Updateオペレーター

$mulオペレーターを使用すると、指定した値でフィールド値を乗算することができます。

詳細情報: $mul

xor演算を使用した$bitオペレーター

$bitオペレーターは論理XOR演算を使用してビット単位の更新をサポートします。

詳細情報: $bit

$min Updateオペレーター

$minオペレーターは、指定した値が現在のフィールド値よりも小さかったら、フィールド値を指定した値に更新します。

詳細情報: $min

$max Updateオペレーター

$maxオペレーターは、指定した値が現在のフィールド値よりも大きかったら、フィールド値を指定した値に更新します。

詳細情報: $max

$currentDate Updateオペレーター

$currentDateオペレーターは現在時刻をセットします。Date型、timestamp型を選択できます。

詳細情報: $currentDate

$push UpdateオペレーターのためのModifiersのエンハンス

$pushオペレーターは機能性と使いやすさを向上させるため、$sort, $slice, $each modifiersのサポートを強化しました。

また、$pushオペレーターには$position modifierが追加されました。
訳注: $positionについては後ほど説明があります。

詳細情報: $push

$each Modifierの変更

$sort, $slice, $position modifireと合わせて使用する場合、$each$pushの最初のmodifierである必要はなくなりました。

詳細情報: $each

$sort Modifierのエンハンス

$sortを使って、通常の配列を並び替えることができるようになりました。
訳注: これまでのバージョンでは、ドキュメントを要素として持つ配列のみソートできました。

この変更は、ドキュメントではない配列の要素を使ったソートができることを意味します。
また、もし配列の要素がドキュメントだった場合、ドキュメントのフィールド指定だけでなく、ドキュメント全体でのソートが可能です。
訳注: つまり、通常の配列である

array[12, 43, 6, 89, 77, 90]

もソートできるようになりました。

また、ドキュメントの配列である

array[
  { id: 3, score: 8 },
  { id: 4, score: 7 },
  { id: 5, score: 6 }
]

では、フィールドを指定してもしなくてもソートができるようになりました。
フィールドを指定しなかった場合は、第1要素(上記の場合はid)でソートされます。

$sortは、もはや$sliceを必要としません。

詳細情報: $sort

$slice Modifierのエンハンス

$slice modifierが整数値の指定できるようになりました。整数値を指定すると、配列の前から数えた要素数番目でスライスします。
訳注: 例えば、$sortといっしょに使うと、”配列をソートして上位3つを切り出す”という処理ができます。

詳細情報: $slice

$position Modifire

$position modifierは、$pushオペレーターを使った際に、値を挿入する箇所を明示的に指定できます。

詳細情報: $position

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?