• mongodb清洗数据


    1,数据库连接超时:DBPool的连接时的配置:
    自己进行设置:
      MongoClientOptions mco = new MongoClientOptions.Builder()
                .autoConnectRetry(autoConnectRetry).writeConcern(WriteConcern.SAFE).connectionsPerHost(
                    poolSize).threadsAllowedToBlockForConnectionMultiplier(blockSize).connectTimeout(
                    connectTimeout).socketTimeout(socketTimeout).maxWaitTime(maxWaitTime).build();
            mongoClient = new MongoClient(listServerAddresses.get(i), mco);  

    2,
    六月 03, 2015 10:05:34 上午 com.mongodb.DBPortPool gotError
    警告: emptying DBPortPool to /172.18.2.162:27017 b/c of error
    com.mongodb.MongoException: ids don't match

    3,查询数据
     DBObject timebegine = new BasicDBObject();
            DBObject timebeginegte = new BasicDBObject();
            timebeginegte.put("$gte"this.getTimeBegine());
            timebegine.put("createTime"timebeginegte);
            DBCursor result = collection.find(timebegine).sort(new BasicDBObject("createTime", 1));  

    正则表达式,mongo里面没有类似sql的like特性,不过可以用正则表达式代替

    使用正则表达式查询有两种情况,在支持正则表达式字面值(标量)的语言里可以直接使用正则表达式字面值,比如RUBY NODEJS等。

    db.USER.find({NAME:/^run/i});//以javascript为例,这个查询出所有用户名以run开头的用户,且不分大小写

    像JAVA这样不支持正则表达式标量的语言怎么办呢?就有些麻烦了,需要借助MONGO api完成从字符串到正则表达式的转化。

    db.USER.find(NAME:{$regex:'^run',$options:'i'});//这行命令完成跟上一行一样的工作。

    其中,$options是正则表达式的选项,它一共有三个字母的任意组合可选,这三个字母分别是g i m,这三个字母可以任意组合表达不同的意义。

    g:表示针对整个字符串做匹配,如果不加正则表达式在匹配到第一个符合的子串时就返回了。(global)

    i:忽略大小写(insenssitive)

    m:一个字符串内如果存在换行符,将作为多行模式匹配(multiple)

    除了i以外其它两个选项在查询的时候恐怕用不到。



    5  Exception in thread "main" com.mongodb.MongoException$CursorNotFound: cursor 2918353977892988810 not found on server /172.18.22.11:27017

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     collection.resetOptions();
        collection.addOption(Bytes.QUERYOPTION_NOTIMEOUT);
        DBCursor result = collection.find(timebegine).sort(new BasicDBObject("createTime", 1));
        int delnum = result.count();
        logger.info("需要处理的消息数为:{}"delnum);
        while (result.hasNext()) { 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     





  • 相关阅读:
    组件开发的博客信息
    读书片断之 开发自定义HTTP模块
    .NET2.0抓取网页全部链接
    数据分页处理方法汇总(例子)
    GridView添加统计(合计)行
    JS中$含义及用法
    Hashtable, ArrayList, List, Dictionary学习
    C#自定义消息映射!
    winform等待窗口
    DataView的RowFilter特殊字符的处理
  • 原文地址:https://www.cnblogs.com/zhailzh/p/1789e5526865563ee06113bbb1cab30c.html
Copyright © 2020-2023  润新知