mongodb Java数组
2017-11-17 16:28
239 查看
比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下:
下面对这个文档中的tag进行增删该查操作,这里用到了spring mongodb 里面的MongoTemplate类。我这里把tags里的内嵌文档抽象成了Tag类。代码删除和修改本身就包含查询方法,所以没写查询方法
代码如下:
<!-- lang: js --> { "_id" : "195861", "tags" : [ { "tagId" : NumberLong(766), "optDate" : ISODate("2013-08-12T15:21:02.930Z"), "enable" : true }, { "tagId" : NumberLong(778), "optDate" : ISODate("2013-08-12T15:21:02.930Z"), "enable" : true } ] }
下面对这个文档中的tag进行增删该查操作,这里用到了spring mongodb 里面的MongoTemplate类。我这里把tags里的内嵌文档抽象成了Tag类。代码删除和修改本身就包含查询方法,所以没写查询方法
代码如下:
<!-- lang: java --> /** * * @author zhangdonghao * */ @Component("UserrTagServiceImpl") public class UserrTagServiceImpl implements UserrTagService { /** * Mongo DB Spring Template */ @Resource protected MongoTemplate mongoTemplate = null; public UserrTagServiceImpl() { } /** **给tags数组添加一个元素 */ @Override public Response<Integer> addTag(String id, Long tagId) { try { Tag tag = new Tag(tagId); tag.setOptDate(new Date()); tag.setEnable(true); Query query = Query.query(Criteria.where("_id").is(id)); Update update = new Update(); update.addToSet("tags", tag); mongoTemplate.upsert(query, update, User.class); } catch (Exception e) { return new Response<Integer>(0); } return new Response<Integer>(1); } /** **修改tags数组中内嵌文档指定一个元素的值 */ @Override public Response<Integer> disableTag(String id, Long tagId) { try { Query query = Query.query(Criteria.where("_id").is(id) .and("tags.tagId").is(tagId)); Update update = new Update(); update.set("tags.$.enable", false); mongoTemplate.updateFirst(query, update, User.class); } catch (Exception e) { return new Response<Integer>(0); } return new Response<Integer>(1); } /** **删除tags数组中指定的内嵌文档 */ @Override public Response<Integer> removeTag(String id, Long tagId) { try { Query query = Query.query(Criteria.where("_id").is(id) .and("tags.tagId").is(tagId)); Update update = new Update(); update.unset("tags.$"); mongoTemplate.updateFirst(query, update, User.class); } catch (Exception e) { return new Response<Integer>(0); } return new Response<Integer>(1); } public MongoTemplate getMongoTemplate() { return mongoTemplate; } public void setMongoTemplate(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; } }
相关文章推荐
- 【MongoDB】Java驱动读写数组
- mongoDB javaAPi 添加嵌套数组数据 更新
- java mongoDB 二级数组嵌套查询
- Java Spring 删除mongodb数组内置文档
- MongoDB 第三周作业――用java操作MongoDB之删除数组中的元素
- java Mongodb 查询数组
- [Java 11] ArraysDemo 数组简单的排序,填充操作
- 从头开始学java--数组
- 剑指Offer面试题36(Java版):数组中的逆序对
- java学习-数组遍历
- java 数组初始化
- java数组的排序与拷贝
- [java实现]找一个数组的最大和的连续子数组(时间复杂度 O(n))
- javaSE_06Java中的数组(array)
- Java的数组
- socket编程 各种类型转换成字节数组(java)
- java流程控制、数组入门(J2SE入门3)
- 剑指Offer面试题38(Java版):数字在排序数组中出现的次数
- Ubuntu14.04下Mongodb的Java API编程实例(手动项目或者maven项目)
- mongodb java使用