【原创】【译】MongoDB 3.0.6更新数据

概述

你可以使用updateOne,updateMany,replaceOne方法来更新集合中的文档。这些方法接收如下参数:

  • 一个过滤器文档
  • 指定修改操作的文档
  • 一个可选参数(可选)

为了明确过滤器,使用相同的结构和语法作为查询条件。可以参考之前的MongoDB查询数据的文档。

你不能更新_id域


前提

这一节依然使用test数据库中restaurant集合来演示。关于导入数据集的操作,参考之前的插入数据集的文档。

我们紧接着之前博客的介绍。
需要导入下面的包:

   import org.bson.Document;
   import static java.util.Arrays.asList;

更新指定域

为了更新域值,MongoDB提供了update operators,例如$set来更新值。一些更新操作,例如$set,当域不存在的时候会自动创建域。更多内容可以去看update operators。

更新顶级域

下面的操作是更新文档中 name为“Juni”,用$set操作来更新cuisine
域,$currentDate来更新最后修改时间。

         db.getCollection("restaurants").updateOne(
            new Document("name", "Juni"), 
            new Document("$set", 
            new Document("cuisine", "American (New)")) 
            .append("$currentDate", new Document("lastModified", true)));

updateOne方法会返回一个包含操作信息的UpdateResult。getModifiedCount会返回文档被修改的地方的数目。

更新嵌入式文档

为了更新包含嵌入式文档的域,我们使用点记法。当使用点记法的时候,需要写入整个名称引用。以下操作是更新嵌入在address里的street域。

         db.getCollection("restaurants").updateOne(
                new Document("restaurant_id", "41156888"), 
                new Document("$set", 
                new Document("address.street", "East 31st Street")));

你可能感兴趣的:(【原创】【译】MongoDB 3.0.6更新数据)