如何在Java中运行动态mongo查询

时间:2019-08-14 05:21:24

标签: java mongodb-query

我正在尝试在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. 

1 个答案:

答案 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);