MongodbTemplate的增删改操作
来源:互联网 发布:怎么拿到网站数据库 编辑:程序博客网 时间:2024/06/06 04:53
插入数据操作
将参数转换成一个对象,直接调用insert方法即可:
举例:
@Document(collection="student")public class Student { private String studentId; private String name; private int age; private String sex; public String getStudentId() { return studentId; } public void setStudentId(String studentId) { this.studentId = studentId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; }}
首先创建一个javabean,其中的@Document注解是指定该对象和哪个collection对应。
然后我们将要存入的数据封装到这个对象中,并调用mongodbTemplate的insert方法。
public void insert(){ Student student = new Student("1","zhangsan",18,"男"); mongoTemplate.insert(student);}
当然,在开发中复杂的数据结构是比较常见的,例如我们需要存储嵌套文档的时候,如果直接使用javabean是比较麻烦的,这种比较复杂的数据结构,我们只需要拿到json字符串,并将其转换成json对象,即可直接插入到mongodb中。
public void insert(){ String classStr = "{'classId':'1','Students':[{'studentId':'1','name':'zhangsan'}]}"; JSONObject parseObject = JSON.parseObject(classStr); mongoTemplate.insert(parseObject,"class");}
insert方法有一个缺陷,就是每调用一次,就会插入一条新的数据,但是有很多时候,我们需要如果数据存在,则修改,如果不存在,则插入,这个时候,更新操作是比较常用的。
更新数据操作
更新一条数据,在关系型数据库中,我们需要where条件筛选出需要更新的数据,并且要给定更新的字段及值,在mongodb中也是一样,我们需要给定条件和值:
public void update(){ Query query = new Query(); query.addCriteria(Criteria.where("classId").is("1")); Update update = Update.update("teacher", "Mr.wang"); mongoTemplate.upsert(query, update, "class");}
在classId为1的数据中修改teacher字段为Mr.wang,如果这条数据中没有teacher字段,则会添加该字段。
mongodbTemplate中还有另外一个更新方法:
mongoTemplate.updateFirest(query, update, "class");mongoTemplate.updateMulti(query, update, "class");
这个两个方法一个是更新满足条件的第一条数据,一个是更新所有满足条件的数据,它们和upsert的区别就是,如果query条件没有筛选出对应的数据,那么upsert会插入一条新的数据,而update则什么都不会做。和关系型数据库中的merge和update的一样。
添加内嵌文档中的数据
Query query = Query.query(Criteria.where("classId").is("1"));Student student = new Student("1", "lisi", 18, "man");Update update = new Update();//update.push("Students", student);update.addToSet("Students", student);mongoTemplate.upsert(query, update, "class");
addToSet如果数据已经存在,则不做任何操作,而push会插入一条一样的数据。
修改内嵌文档中的数据
public void update(){ Query query = Query.query(Criteria.where("classId").is("1") .and("Students.studentId").is("1")); Update update = Update.update("Students.$.name", "lisi"); mongoTemplate.upsert(query, update, "class");}
删除内嵌文档中的数据
Query query = Query.query(Criteria.where("classId").is("1") .and("Students.studentId").is("3"));Update update = new Update();update.unset("Students.$");mongoTemplate.updateFirst(query, update, "class");
这种方法有一个缺陷,会将符合条件的数据修改成null,如果要彻底删除,则需要使用pull(pull删除内嵌文档的时候,student对象的值一定要和被删除的一模一样)
Query query = Query.query(Criteria.where("classId").is("1"));Update update = new Update();Student student = new Student("2","lisi",18,"man");update.pull("Students",student);mongoTemplate.updateFirst(query, update, "class");
删除操作
Query query = Query.query(Criteria.where("classId").is("1"));mongoTemplate.remove(query,"class");
remove操作是直接将所有满足条件的数据给删除,如果只是要删除内嵌文档中的数据,则需要使用上面更新操作。
- MongodbTemplate的增删改操作
- MongodbTemplate的查询操作
- 通用的增删改操作
- 二叉排序树的增删改操作
- Ecmall 的增删改操作
- 节点的增删改复制的操作
- 通用的数据库增删改操作类
- 嵌套表的操作(增删改查)
- java操作mysql的增删改查
- 二叉排序树的增删改操作(修改删除)
- java操作mysql的增删改查
- map的 增删改查 操作
- Magento基础的增删改查操作
- Extjs4中grid的增删改操作
- DOM的增删改查操作
- Ibatis的增删改查操作
- mysql表的增删改除操作
- 数据库的增删改查操作
- Secret Origins
- 安卓开发-ListView的适配器和监听器/ExpandableListView的使用
- Android 试题滑动刻度尺--自定义View
- c#调用C/C++代码时出现的PInvokeStackImbalance异常实例及解决方式
- 【LeetNode2-1-7】Two sum--C++源代码(VS2015)
- MongodbTemplate的增删改操作
- [LeetCode] 19. Remove Nth Node From End of List
- 2017/10/05 明天就回去了..
- HDU
- 二.像素操作
- 百度地图学习总结(2)—我爱北京天安门,Hello-BaiduMap
- java正则表达式的使用-抓取百度搜索的结果
- 2009年的人民币1000元购买力,相当于30年前人民币多少钱?
- svn使用中出现的错误