mongodb更新某个字段_NoSQL之MongoDB——数据更新操作

MongoDB提供下列方法用于更新一个集合

d04acc36750de57d4fa297995a29c55b.png

上述方法接受以下参数:

  • 过滤器文档,确定要更新哪些文档。这些过滤器与查询操作中使用的过滤器有相同的句法规则。
  • 查询过滤器文档,使用表达式:指定相等条件,找出

所有字段的值为的文档:{ : , ... }

  • 查询过滤器文档,可使用查询操作符指定条件:

{ : { : }, ... }

  • 指定了更新内容的更新文档;或一个替换的文档,替换掉匹配到的文档而保持_id字段不变。
  • 一个选项文档。

1 行为

原子性

MongoDB 中写操作在单文档级别具有原子性。

_id字段

文档一旦创建,_id字段值就固定了,不能被更新,也不能用一个_id字段值与原文档不同的文档来替换原文档。

文档大小

当执行更新操作时,导致文档变大并超出已分配的大小时,更新操作会在磁盘上重新定位文件。

字段顺序

MongoDB 保持字段写入时的顺序,除非遇到下列情况:

  • _id字段总是处在首位。
  • 更新的时候对某一个或某些字段重命名可能导致字段顺序变更

2.6版本中的变化:从2.6版本开始,MongoDB 尽可能地保持字段写入时的顺序,但之前的版本并不是这样的。

Upsert 选项

如果db.collection.update(), db.collection.updateOne(), db.collection.updateMany(), 或者db.collection.replaceOne()包括“upsert : true”并且使用指定的过滤器没有匹配到任何文档,那么此操作将会创建一个新文档并插入数据库。如果匹配到文档,那么此操作将修改或者替换匹配到的一个或多个文档。

2示例集合

本页的例子在mongo shell中使用db.collection.find() 方法。在mongo shell中,如果没有将游标赋给一个var类型的变量,那么游标将会自动迭代20次以打印结果集中的前20个文档。

在mongo shell中执行下面的语句,将数据灌入users 集合。

db.users.insertMany( [ { _id: 1, name: "sue
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值