我想知道是否有一种方法可以直接通过Java执行类似mongo的查询,即我们将类似mongoDB的查询作为字符串提供给mongoDB的Java驱动程序中的函数作为字符串对象,并返回一个DBCursor对象。就像是:
import com.mongodb.*;
import java.net.UnknownHostException;
public class ExecuteQuery {
public static void main(String args[]){
try{
Mongo m = new Mongo();
DB db = m.getDB("test");
DBCollection coll = db.getCollection("first");
DBObject doc = new BasicDBObject();
DBCursor cur =coll.executeQuery("db.first.find({"username":"joe"})");
}
catch(UnknownHostException e){
System.out.println(e);
}
catch (MongoException.DuplicateKey e) {
System.out.println("Exception Caught" + e);
}
}
}
Note: executeQuery()
不是内置函数。它仅用于演示目的。
那么,java api中有没有一个函数可以将json字符串转换为aBasicDBObject
实例?谢谢。
是的,有办法,将过滤器作为字符串传递。例子:
BasicDBObject query = BasicDBObject.parse("{userId: {$gt: \"1\"}}");
FindIterable<Document> dumps = crapCollection.find(query);
您还可以使用com.mongodb.util.JSON
,但我不推荐。它的描述性较差。
DBObject dbObject = (DBObject)JSON.parse("{userId: {$gt: \"1\"}}");
请注意,这可能容易受到 SQL 注入的攻击,因为您自己解析/构建过滤器。
我建议使用Jongo 的参数化查询 http://jongo.org/#query-templating.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)