mongodb java array,java mongodb insert怎么插入数组

86ee5bd5c24d24df12d8ff5df72be737.png

largeQ

有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下:{"_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类。代码删除和修改本身就包含查询方法,所以没写查询方法代码如下:/**** @author zhangdonghao**/@Component("UserrTagServiceImpl")public class UserrTagServiceImpl implements UserrTagService {/*** Mongo DB Spring Template*/@Resourceprotected MongoTemplate mongoTemplate = null;public UserrTagServiceImpl() {}/****给tags数组添加一个元素*/@Overridepublic Response 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(0);}return new Response(1);}/****修改tags数组中内嵌文档指定一个元素的值*/@Overridepublic Response 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(0);}return new Response(1);}/****删除tags数组中指定的内嵌文档*/@Overridepublic Response 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(0);}return new Response(1);}public MongoTemplate getMongoTemplate() {return mongoTemplate;}public void setMongoTemplate(MongoTemplate mongoTemplate) {this.mongoTemplate = mongoTemplate;}}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值