java操作mongodb——更新数据

Java中可以通过updateOne,updateMany,replaceOne方法进行集合的文档更新。但是 _id 是不能更新的

updateOne只会更新一条数据,即使通过Filters.lt("age", 20)过滤出多条数据,也只会取出一条进行更新

更新操作符

  名称        描述

  $inc        增加一个指定值

  $mul        乘以一个指定值

  $rename       重命名      

  $setOnInsert     更新操作对现有的文档没有影响,而是新插入了一个文档,则在这新插入的文档中加上指定字段

  $set        修改值

  $unset        删除文档中指定字段

  $min         更新文档中小于指定值的字段

  $max        更新文档中大于指定值的字段

  $currentDate    设置当前时间,日期或者时间戳

$set

只修改指定字段值,当字段不存在时,则在该文档中添加一个新的字段并赋值

doc.updateOne(Filters.eq("age", 20), new Document("$set",new Document("sex",2222)));
FindIterable<Document> iter1 = doc.find();
iter1.forEach(new Block<Document>() {
  public void apply(Document _doc) {
    System.out.println(_doc.toJson());
  }
});

$inc

对指定字段进行增量增加,当字段不存在时,则在该文档中添加字段并赋值

doc.updateOne(Filters.eq("name", "张三"), new Document("$inc",new Document("age",10)));
FindIterable<Document> iter = doc.find();
iter.forEach(new Block<Document>() {
  public void apply(Document _doc) {
    System.out.println(_doc.toJson());
  }
});

$mul

$mul的用法与$inc的用法差不多,差别在于$mul为相乘,$inc为相加,若字段不存在,添加字段并赋值为0

$rename

修改document的字段名

doc.updateOne(Filters.eq("name", "张三"), new Document("$rename",new Document("phone","telPhone")));
FindIterable<Document> iter = doc.find();
iter.forEach(new Block<Document>() {
  public void apply(Document _doc) {
    System.out.println(_doc.toJson());
  }
});

其他操作可查看官方文档:

https://docs.mongodb.com/manual/reference/operator/update/

上一篇:Excelize 2.5.0 正式发布,这些新增功能值得关注


下一篇:iOS之Xcode 8.0真机调试运行:This ** is running iOS 10.1.1 (14B100), which may not be supported