我有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仲裁设置。
我用谷歌搜索信息,但我无法找到任何信息。我相信我的代码很好。从驾驶员的角度来看,是否存在任何人所面临的陈旧问题。
有人可以帮助我。
由于