• mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句


    http://blog.csdn.net/qkxh320/article/details/16115671

    1.首先操作mongodb最基本命令::

    show databases;             ---------------------显示全部数据库

    use 数据库名;        --------------------切换到指定数据库

    show collections;  --------------------显示该数据库下的全部表

    之后就可以执行相应增删改查语句了!

    2.

    查询:  logger  是我自己的数据库表名

    db.logger.find()  查询全部,数据过多的话继续执行 it 就可以继续显示下一页数据,重复再重复

    db.logger.count()     查询数量

    db.logger.find({"device":"mobile"})     查询device是mobile的数据

    指定条件下查询:

    db.logger.find(

    {"device":"mobile","datetime":{"$gt":1384185600000,"$lt":1384271999000}}

    );   

     查询指定device是mobile,时间在1384185600000到1384271999000之间的logger,这里的数字是时间类型对应的毫秒数,1384185600000对应“2013-11-12 00:00:00”,1384271999000对应2013-11-12 23:59:59,也就是11月12号这一天

    db.logger.find(

    {"device":"mobile","datetime":{"$gt":1384185600000,"$lt":1384271999000}}

    ).count();   

    后面加上count,查询上面集合的数量  

    去重查询:

    db.runCommand(

    {"distinct":"数据库表名","key":"要去重的属性名","query":{“查询语句”}}

    );

    返回的是去重的集合,在query后面的查询语句中放入自己想加入的条件即可,就像上面指定条件下查询:的find()里面指定的查询语句{"device":"mobile","datetime":{"$gt":1384185600000,"$lt":1384271999000}}  

    db.runCommand(

    {"distinct":"数据库表名","key":"要去重的属性名","query":{“查询语句”}}

    ).values.length;

    后面加上.values.length,返回去重查询后的数量

    3.克隆远程数据库:

    db.copyDatabase("目标数据库","我自己的数据库名","ip地址:端口号")

    就像这样

    db.copyDatabase("web_logger","MyDB","110.110.10.110:27012")

    执行后就可以把ip是110.110.10.110的远程数据库web_logger拉到本地mongodb数据库内

    对应的java语句:

    连接mongodb数据库:
    public DBCollection getCollection(String tableName) {

    DBCollection collection = null; 
    try {
    Mongo mongo = new Mongo("XXXX.XXX.XX.XXX",27017);
    DB db = mongo.getDB("web_logger");
    collection = db.getCollection(tableName);
    System.out.println("已连接"+tableName+"表");
    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }


    return collection;

    }

    传入表名,返回该表的连接!

    查询指定条件的数据:

    DBObject query = new BasicDBObject();

    query.put("device","web");

    query.put("city","杭州");

    query.put("datetime", new BasicDBObject("$gte",1384185600000).append("$lte",1384271999000));

    DBCollection collection = 连接自己定义的数据库表.

     

    之后几种情况的查询

    1.查询数量

    long num = collection.count(query);

    2.查询去重数量

    long num = collection.distinct("ip",query).size();

    3.查询集合

    List<Logger> list = new ArrayList<Logger>();

    DBCurson curson = collection.find(query);

    Gson gson = new Gson();

    while(curson.hasNext()){

    DBObject element = curson.next();

    Logger logger = gson.fromJson(element.toString(), Logger.class);

    list.add(logger);

    }

    return list;

    4.查询去重集合:

    List list = collection.distinct("ip",query);

  • 相关阅读:
    Eclipse 开发过程中利用 JavaRebel 提高效率
    数字转化为大写中文
    网页变灰
    解决QQ截图无法在PS中粘贴
    ORACLE操作表时”资源正忙,需指定nowait"的解锁方法
    网页常用代码
    SQL Server 2000 删除注册的服务器
    GridView 显示序号
    读取Excel数据到DataTable
    清除SVN版本控制
  • 原文地址:https://www.cnblogs.com/guke/p/3966173.html
Copyright © 2020-2023  润新知