博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习(三) java 中 mongodb的各种操作
阅读量:7166 次
发布时间:2019-06-29

本文共 4269 字,大约阅读时间需要 14 分钟。

一. 常用查询:

1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用 regex...)

public PageUrl getByUrl(String url) {        return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class);    }

2. 查询多条数据:linkUrl.id 属于分级查询

public List
getPageUrlsByUrl(int begin, int end,String linkUrlid) { Query query = new Query(); query.addCriteria(Criteria.where("linkUrl.id").is(linkUrlid)); return find(query.limit(end - begin).skip(begin), PageUrl.class); }

3. 模糊查询:

public long getProcessLandLogsCount(List
conditions) { Query query = new Query(); if (conditions != null && conditions.size() > 0) { for (Condition condition : conditions) {  query.addCriteria(Criteria.where(condition.getKey()).regex(".*?\\" +condition.getValue().toString()+ ".*")); } } return count(query, ProcessLandLog.class); }

4. gte: 大于等于,lte小于等于...注意查询的时候各个字段的类型要和mongodb中数据类型一致

public List
getProcessLandLogs(int begin,int end,List
conditions,String orderField,Direction direction) { Query query = new Query(); if (conditions != null && conditions.size() > 0) { for (Condition condition : conditions) { if(condition.getKey().equals("time")){ query.addCriteria(Criteria.where("time").gte(condition.getValue())); //gte: 大于等于 }else if(condition.getKey().equals("insertTime")){ query.addCriteria(Criteria.where("insertTime").gte(condition.getValue())); }else{ query.addCriteria(Criteria.where(condition.getKey()).is(condition.getValue())); } } } return find(query.limit(end - begin).skip(begin).with(new Sort(new Sort.Order(direction, orderField))), ProcessLandLog.class); } public List
getDpsLandsByTime(int begin, int end, Date beginDate,Date endDate) {
  return find(new Query(Criteria.where("updateTime").gte(beginDate).lte(endDate)).limit(end - begin).skip(begin),     DpsLand.class);  }

    查询字段不存在的数据

public List
getGoodsDetails2(int begin, int end) { Query query = new Query(); query.addCriteria(Criteria.where("goodsSummary").not()); return find(query.limit(end - begin).skip(begin),GoodsDetail.class); }

 

 

5. 查询数量:

public long getPageInfosCount(List
conditions) { Query query = new Query(); if (conditions != null && conditions.size() > 0) { for (Condition condition : conditions) {
query.addCriteria(Criteria.where(condition.getKey()).is(condition.getValue())); } } return count(query, PageInfo.class); }

6. 更新一条数据的一个字段:

public WriteResult updateTime(PageUrl pageUrl) {        String id = pageUrl.getId();        return updateFirst(new Query(Criteria.where("id").is(id)),Update.update("updateTime", pageUrl.getUpdateTime()), PageUrl.class); }

7. 更新一条数据的多个字段:

//调用更新private void updateProcessLandLog(ProcessLandLog processLandLog,            int crawlResult) { List
fields = new ArrayList
(); List
values = new ArrayList(); fields.add("state"); fields.add("result"); fields.add("time"); values.add("1"); values.add(crawlResult); values.add(Calendar.getInstance().getTime()); processLandLogReposity.updateProcessLandLog(processLandLog, fields, values); } //更新 public void updateProcessLandLog(ProcessLandLog land, List
fields,List
values) { Update update = new Update(); int size = fields.size(); for(int i = 0 ; i < size; i++){ String field = fields.get(i); Object value = values.get(i); update.set(field, value); } updateFirst(new Query(Criteria.where("id").is(land.getId())), update,ProcessLandLog.class); }

8. 删除数据:

public void deleteObject(Class
clazz,String id) { remove(new Query(Criteria.where("id").is(id)),clazz); }

9.保存数据:

//插入一条数据 public void saveObject(Object obj) {        insert(obj);    } //插入多条数据    public void saveObjects(List
objects) { for(T t:objects){ insert(t); } }

 

 

 

 

 

转载于:https://www.cnblogs.com/ry123/p/3863155.html

你可能感兴趣的文章
智慧城市研究述评
查看>>
思科和VMware的SDN解决方案竟可同时选择
查看>>
据实而用 浅析会议摄像机的选购
查看>>
美国会委员会建议禁止中国国企收购美国资产
查看>>
联想走出收购摩托罗拉阴影
查看>>
武汉使用电子标签技术监控餐厨垃圾
查看>>
漳州电信分公司10000号客服中心推出新媒体服务
查看>>
管中窥豹!从电子市场看安防行业的变与不变
查看>>
北京通州获批全国海绵城市建设试点
查看>>
思科预测未来五年全球IP流量CAGR为22%
查看>>
家庭光伏发电迟迟不见补贴 只好诉诸法庭
查看>>
联发科今年就靠它活着了!
查看>>
智能家居的发展面临这三大问题
查看>>
将Jenkins的测试结果整合到Testlink
查看>>
如何打好ERP有效运行的持久战?
查看>>
solr运行配置与数据库数据导入到solr
查看>>
PostgreSQL修炼之道:从小工到专家. 1.1什么是PostgreSQL
查看>>
在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器
查看>>
Node.js Stream - 进阶篇
查看>>
树莓派(Raspberry Pi):完美的家用服务器
查看>>