有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

MongoDB java驱动程序行为异常

我使用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=新的BasicDBObject(“messageid”,新的BasicDBObject($regex,messageid))声明

尽管SearchResult表中没有与messagedid匹配的记录,但我在记录中获得了所有集合。说明messageid是否为XXXXYYYY。集合中没有messageid为XXXXYYYY的记录

这段代码执行了好几次。但从第三次开始,它就获得了整个收藏

我不确定我哪里出了问题,或者司机本身有问题

我使用的是2人副本集+1仲裁设置

我在谷歌上搜索信息,但找不到任何信息。我相信我的代码是好的。从司机的角度来看,是否有任何人面临的陈旧问题

谁能帮帮我吗

谢谢


共 (0) 个答案