MongoDB java驱动程序行为奇怪

时间:2014-02-10 11:18:29

标签: java mongodb

我有MongoDB作为数据库,我使用MongoDB的JAVA驱动程序连接到数据库。我面临的问题很奇怪。现在就JAVA驱动程序中的任何错误发表评论还为时过早。

我使用驱动程序遇到的问题是,在DB中进行一些操作后,相同的代码不会执行它要执行的操作。不确定为什么。

请参阅下面的示例代码

MongoClient mongoclient=null;
    DB db;
    DBUtils dbUtils=new DBUtils();
    mongoclient=dbUtils.connectToDB("pingpong");    
    db = mongoclient.getDB("pingpong"); 
    //This is commented out for the time being as data is cleared in postmessage
    //dbUtils.clearData(messageid);
    BasicDBObject query = new BasicDBObject("messageid", new BasicDBObject("$regex",messageid));
    DBCollection coll=db.getCollection("SearchResult");
    DBCursor cursor=coll.find(query);
    int j=1;
    if (cursor.count()>0){
    }else{
        while(j<=5){
            System.out.println("THIS"+messageid);
            BasicDBObject query2 = new BasicDBObject("messageid", new BasicDBObject("$regex",messageid));
            DBCollection coll2=db.getCollection("SearchResult");
            DBCursor cursor2=coll2.find(query2);
            if (cursor2.count()>0){
                System.out.println(cursor2.count());
                break;                  
            }
            try {
                Thread.sleep(j*1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            j=j+1;
            if((j==5) ||(j>5)){
                break;
            }
        }
    } 

我面临的最重要问题是

“BasicDBObject query2 = new BasicDBObject(”messageid“,new BasicDBObject(”$ regex“,messageid));”言。

尽管SearchResult表中没有与messagedid匹配的记录,但我在记录中获取了整个集合。假设messageid是XXXXYYYY。并且在集合中没有messageid为XXXXYYYY的记录。

此代码执行良好几次。但是从第三次起,它就取了整个系列。

我不确定我哪里出错了,或者DRIVER本身是否存在问题。

我正在使用2成员副本集+ 1仲裁设置。

我用谷歌搜索信息,但我无法找到任何信息。我相信我的代码很好。从驾驶员的角度来看,是否存在任何人所面临的陈旧问题。

有人可以帮助我。

由于

0 个答案:

没有答案