文档章节

mongodb的初级操作

jackLicy
 jackLicy
发布于 2016/07/05 19:07
字数 536
阅读 11
收藏 0

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<PageUrl> 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<Condition> 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<ProcessLandLog> getProcessLandLogs(int begin,int end,List<Condition> 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<DpsLand> 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<GoodsDetail> 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<Condition> 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<String> fields = new ArrayList<String>();
        List<Object> values = new ArrayList<Object>();
        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<String> fields,List<Object> 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<T> clazz,String id) {
        remove(new Query(Criteria.where("id").is(id)),clazz);
    }

9.保存数据:

//插入一条数据
public void saveObject(Object obj) {
        insert(obj);
    }

//插入多条数据    
public void saveObjects(List<T> objects) {
        for(T t:objects){
            insert(t);
        }
    }

© 著作权归作者所有

共有 人打赏支持
jackLicy

jackLicy

粉丝 0
博文 3
码字总数 3592
作品 0
朝阳
私信 提问
Nosql数据库教程之初探MongoDB - 第一部分

日期:2012/01/16 来源:GBin1.com 大家都听说过nosql解决方案吧?现在是web开发中很流行的技术。 是不是也有听说过MongoDB? 你是不是准备好了来学习一下web开发中最酷的技术之一MongoDB? ...

gbin1
2012/02/06
0
0
Zabbix监控mongodb配置

本文主要介绍zabbix监控mongodb的配置。 zabbix监控mongodb需要自定义脚本去监控,脚本可以传入多个参数。 原理:通过mongodb客户端连接命令,过滤出db.serverStatus()输出的信息。 一、创建...

hnr1017
07/03
0
0
mongodb(一)mongodb 副本集配置

---layout: blogistop: truetitle: "mongodb 副本集配置"date: 2018-08-29category: mongodbtags: mongodb --- 环境 下载解压 基本配置: 假定已经解压安装完成,现在所处的目录是 /usr/loc...

开心的哈士奇
10/17
0
0
mongodb 3.2.5安装过程详细记录

2016-10-19 mongodb 3.2.5安装 1 准备安装介质 安装介质下载: mongodb的安装方式,我通常使用二进制包的方式,内网不能配置连接外网的yum源; 官方建议的mongodb下载地址为: Downloads.mo...

yumushui991
06/26
0
0
基于云数据库MongoDB版进行应用开发

MongoDB是一个基于分布式文件存储的数据库,在互联网、物联网、游戏、金融等领域被广泛采用。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是当前最流行的Nosql...

mcy0425
09/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部