標籤:style blog color io ar cti div new
插入操作:
直接給個例子
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 objectassertThat(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 updatingp = 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操作可以用來進行刪除。