我正在尝试在Java应用程序中运行动态mongodb查询。但是我遇到NoClassDefFound
错误。我在做什么错了?
DB mongoDB = mongoclient.getDB("test");
String query = "db.test.find({'address':'Sydney'})";
MongoQuery mongoQuery = new MongoQueryParser().parse(query, new
HashMap());
BasicDBList results = mongoQuery.execute(mongoDB);
System.out.println(results.size());
我除了结果是
{ "_id" : "106", "full_name" : "Susan Dixit", "address" : "Sydney" }
但是我遇到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError:
com.mongodb.casbah.MongoDB
at com.ee.dynamicmongoquery.MongoQuery.execute(MongoQuery.scala:13)
at mongodata.main(mongodata.java:29)
Caused by: java.lang.ClassNotFoundException: com.mongodb.casbah.MongoDB.
答案 0 :(得分:0)
您可以尝试使用db.eval命令。例如:
MongoDatabase database = mongoClient.getDatabase("test");
Bson command = new Document("eval", "db.test.find({\"address\":\"Sydney\"})");
Document result = database.runCommand(command);
或者,您也可以仅将过滤器作为字符串传递,以防您要动态提供。示例:
DBCollection collection = database.getCollection("test");
BasicDBObject query = BasicDBObject.parse("{\"address\":\"Sydney\"}");
FindIterable<Document> dumps = collection.find(query);