Java中可以通過updateOne,updateMany,replaceOne方法進行集合的文檔更新。但是 _id 是不能更新的
updateOne只會更新一條數據,即使通過Filters.lt("age", 20)過濾出多條數據,也只會取出一條進行更新
更新操作符
名稱 描述
$inc 增加一個指定值
$mul 乘以一個指定值
$setOnInsert 更新操作對現有的文檔沒有影響,而是新插入了一個文檔,則在這新插入的文檔中加上指定字段
$unset 刪除文檔中指定字段
$min 更新文檔中小於指定值的字段
$max 更新文檔中大於指定值的字段
$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/
