- 爱易网页
-
数据库教程
- Mongo官方文档翻译 (4)
日期:2014-05-16 浏览次数:20420 次
Mongo官方文档翻译 (四)
更新操作!
官方文档地址:http://docs.mongodb.org/manual/applications/update/
更新
在数据库的四种基本操作中,更新操作是指那些在MongoDB聚集中修改现有记录或文档的操作。
修改操作用来修改聚集中已经存在的一个或多个文档。MongoDB提供了如下的方式来进行更新操作:
1.update
2.save
注意:仔细思考MongoDB中的update操作的下列行为:
1.当更新操作是的目标文档大小超出了文档原来的大小的时候,更新操作会
在磁盘上重新迁移文档,并且会影响到字段的顺序,这依赖于更新操作的类型!
2.对于如下的驱动版本,所有的写操作都会发出一个getLastError命令,来确认
写操作的结果!
C#, version 0.7
Java, version 2.10.0
Node.js, version 1.2
Perl, version 0.601.1
PHP, version 1.4
Python, version 2.4
Ruby, version 1.8
更新
update()方法是用来修改MongoDB聚集中文档的基础方法。默认情况下,update()方法更新一个文档,
如果使用了multi 操作,update()方法会更新聚集中所有符合query标准的文档。update()方法既可以
用新文档替换现有的文档,也可以对现有文档的指定字段进行修改。
update()方法有如下句法:
db.collection.update( <query>,<update>,<options> )
SQL中类似的操作:update()方法类似于SQL 中的UPDATE子句,并且:
1.<query>参数类似于WHERE子句,并且:
2.<update>参数类似于SET子句。
默认的update()方法更新一条文档类似于SQL中带有LIMIT 1子句的UPDATE。
带有multi操作的update方法类似于SQL中没有LIMIT限制的UPDATE子句!
通过下面的示例来思考update()方法的使用:
1.如果<update>参数只包含更新操作如:$set操作符,update()方法会更新类似的字段,如果要
更新子文档中的字段可以通过.操作符。
下面的操作查询了bios聚集的所有文档中_id字段等于1的文档的子文档name中maddle字段值为
Warner并且在awards字段中添加一个新元素。
db.bios.update(
{ _id: 1 },
{
$set: { 'name.middle': 'Warner' },
$push: { awards: { award: 'IBM Fellow', year: 1963, by: 'IBM' } }
}
)
2.如果<update>参数包含$unset操作,update()方法会将其中包含的字段从文档中移除。
下面的操作查询了bios聚集的文档中第一个_id字段等于3的文档,并且移除例如该文档的
birth字段:
db.bios.update(
{ _id: 3 },
{ $unset: { birth: 1 } }
)