[Spring Data MongoDB]學習筆記--MongoTemplate插入修改操作


插入操作:

直接給個例子

import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Criteria.query;

…

Person p = new Person("Bob", 33);
mongoTemplate.insert(p);//還可以多加一個參數,來提供collectionname。比如insert(p,"person").

Person qp = mongoTemplate.findOne(query(where("age").is(33)), Person.class);  

collection document的名字有下面幾種方式:

1. 默認為類名,並且首字母小寫。  比如com.test.Person -> person

2. 通過在類名上增加標記@Document 來指定。

3. 在執行操作時,把collectionname作為參數傳遞進去。

 

主要操作:

  insert,insertAll, save(當object不存在時,執行insert)。

 

更新操作:

import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query;
import static org.springframework.data.mongodb.core.query.Update;

          ...

  WriteResult wr = mongoTemplate.updateMulti(new Query(where("accounts.accountType").is(Account.Type.SAVINGS)),
                                                            new Update().inc("accounts.$.balance", 50.00),
                                                            Account.class);

主要操作:

  updateFirst(更新第一個匹配的), updateMulti(更新所有匹配的)

 

upsert操作:

template.upsert(query(where("ssn").is(1111).and("firstName").is("Joe").and("Fraizer").is("Update")), update("address", addr), Person.class);

先查詢,如果沒有符合條件的,會執行插入,插入的值是查詢值 + 更新值。

 

findAndModify操作:

mongoTemplate.insert(new Person("Tom", 21));
mongoTemplate.insert(new Person("Dick", 22));
mongoTemplate.insert(new Person("Harry", 23));

Query query = new Query(Criteria.where("firstName").is("Harry"));
Update update = new Update().inc("age", 1);
Person p = mongoTemplate.findAndModify(query, update, Person.class); // return's old person object

assertThat(p.getFirstName(), is("Harry"));
assertThat(p.getAge(), is(23));
p = mongoTemplate.findOne(query, Person.class);
assertThat(p.getAge(), is(24));


// Now return the newly updated document when updating
p = template.findAndModify(query, update, new FindAndModifyOptions().returnNew(true), Person.class);
assertThat(p.getAge(), is(25));

可以通過設置FindAndModifyOptions來設置不同的執行效果。

Query query2 = new Query(Criteria.where("firstName").is("Mary"));
p = mongoTemplate.findAndModify(query2, update, new FindAndModifyOptions().returnNew(true).upsert(true), Person.class);
assertThat(p.getFirstName(), is("Mary"));
assertThat(p.getAge(), is(1));

 

remove操作可以用來進行刪除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM