即将发布!MongoDB 2.6发布说明翻译:全新推出的写操作命令
这是为MongoDB Advent Calendar准备的填空帖子。
我已经翻译了即将发布的MongoDB 2.6版本的部分发布说明。这次主要针对写入处理进行了重大功能增加。
注:在MongoDB中,2.5.x为开发版本,2.6.x为发布版本。
他的其他翻譯
-
- まとめ!MongoDB 2.6のリリースノート翻訳と所感
-
- リリース間近!MongoDB 2.6のリリースノート翻訳: 既存機能の変更点
-
- リリース間近!MongoDB 2.6のリリースノート翻訳: Aggregation Pipelineの変更点
-
- リリース間近!MongoDB 2.6のリリースノート翻訳: 新機能と改善点
- リリース間近!MongoDB 2.6のリリースノート翻訳: エンタープライズ向け機能
首先: 全新推出的写作指令
在MongoDB 2.6中,新增了一种使用db.runCommand进行写入操作(insert、update、delete)的新格式。
举例来说,使用runCommand进行插入操作的命令如下所示。
db.runCommand(
{
insert: “people”,
documents: [ { name: "Sam", state: "active" } ],
ordered: false,
writeConcern: { w: 1 }
}
)
修改内容
-
- オプションが指定できるようになりました。例えば、これまではドライバ経由でしか指定できなかったwriteConcern(書き込み保証レベル)が指定できます。
- 実行後、特に失敗時に詳細なステータスがリターンされるようになりました。
顺便说一下,关于旧版本的 db.{collection}.insert() 函数,它并没有被删除,仍然可以使用。不过,其内部实现方式已经有了很大的变化。
在mongo shell中,如果将db.{collection}.insert和()去掉后执行,您可以确认函数的定义,但在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),並且在批量插入多個文件時,即使其中一個失敗,也可以指定繼續執行。
详细信息:
-
- insert
-
- update
- delete
如果连接到版本2.5.4或更高的MongoDB实例,则在mongo shell中默认使用新的写入操作。
注:使用db.{collection}.insert()或runCommand时也会使用新的写入操作。
如果连接到之前版本的MongoDB实例,将使用传统的写入操作。
请参考MongoDB, Inc.开发的官方MongoDB驱动程序,适用于各种编程语言,该驱动程序在2.6版本发布之前就已支持新的写入命令。有关详细信息,请查阅您所使用的驱动程序的发布说明。
新的更新操作员
与书写系统一样,更新系统运营商也已经被添加/更改。
$mul更新操作员
可以使用$mul操作符将字段值与指定的值相乘。
详细信息: $ mul
使用$bit运算符进行xor演算。
$bit操作符使用逻辑异或运算来支持按位更新。
详细信息:$bit
最小化更新操作符
如果指定的值比当前的字段值小,则$ min运算符将更新字段值为指定的值。
详细信息:$min
$max 更新操作符
如果指定的值大于当前字段值时,$max操作符将更新字段值为指定的值。
最大
当前日期更新操作员
$currentDate操作符用于设置当前时间。可以选择Date类型或timestamp类型。
详细信息:$currentDate。
推送 更新操作符的增强子
为了提高功能性和易用性,$push操作符增强了对$sort、$slice和$each修饰符的支持。
此外,$push操作符还添加了$position修饰符。
注:关于$position的解释将在后面进行说明。
详细信息:$push
每个修饰语的更改
在与$sort、$slice和$position modifier结合使用时,$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。
詳細資訊:$排序
增强$slice修改器
$slice modifier 现在可以指定整数值。 通过指定整数值,可以从数组的开头开始计数,并切片数组。
注释:例如,与$sort一起使用时,可以执行“对数组进行排序并切片出前3个”的操作。
详细信息:$截取
职位标志
在使用$push操作符时,可以明确指定要插入值的位置的位置修饰符。
详细信息:$position