https://blog.csdn.net/congcong68/article/details/47064959
spring Data MongoDB 的MongoTemplate提供了两种存储文档方式,分别是save和insert方法,这两种的区别:
(1)save :我们在新增文档时,如果有一个相同_ID的文档时,会覆盖原来的。
(2)insert:我们在新增文档时,如果有一个相同的_ID时,就会新增失败。
1.接下来我们分别介绍的两种方式的具体语法。
(1)Save方式
方法:
1)void save (Object objectToSave) 保存文档到默认的集合。
2)void save(Object objectToSave, String collectionName) 对指定的集合进行保存。
(2) Insert方式
方法:
1)void insert(Object objectToSave) 保存文档到默认的集合。
2)void insertAll(Object objectsToSave) 批量添加到默认的集合。
3)void insert(Object objectToSave, String collectionName) 对指定的集合进行保存。
(1)save :我们在新增文档时,如果有一个相同_ID的文档时,会覆盖原来的。
(2)insert:我们在新增文档时,如果有一个相同的_ID时,就会新增失败。
(3)MongoDB提供了insertAll批量添加,可以一次性插入一个列表,效率比较高,save则需要一个一个的插入文档,效率比较低。public void insert(User object,String collectionName) { mongoTemplate.insert(object, collectionName); }
query:
@Override public User findOne(Map<String,Object> params,String collectionName) { return mongoTemplate.findOne(new Query(Criteria.where("id").is(params.get("id"))), User.class,collectionName); } @Override public List<User> findAll(Map<String,Object> params,String collectionName) { List<User> result = mongoTemplate.find(new Query(Criteria.where("age").lt(params.get("maxAge"))), User.class,collectionName); return result; }
update:
@Override public void updateDemo(DemoEntity demoEntity) { Query query = new Query(Criteria.where("id").is(demoEntity.getId())); Update update = new Update(); update.set("title", demoEntity.getTitle()); update.set("description", demoEntity.getDescription()); update.set("by", demoEntity.getBy()); update.set("url", demoEntity.getUrl()); mongoTemplate.updateFirst(query, update, DemoEntity.class); }
删除
mongoTemplate.remove(new Query(Criteria.where("id").is(params.get("id"))),User.class,collectionName);
删除集合
dropCollection(String collectionName);