使用Java和MongoDB进行参数化查询

时间:2012-05-18 02:48:46

标签: java api mongodb

您可以使用Java和MongoDB进行参数化查询 - 有点像使用JDBC编写的语句吗?

我想做的是这样的事情。设置一个采用日期范围的查询 - 然后使用不同的范围调用它。我知道DBCursor.find(...)不能以这种方式工作 - 这是一种伪代码来说明我正在寻找的东西。

DBCollection dbc = ...
DBObject pQuery = (DBObject) JSON.parse("{'date' : {'$gte' : ?}, 'date' : {'$lte' : ?}}");
DBCursor aprilResults = dbc.find(pQuery, "2012-04-01", "2012-04-30");
DBCursor mayResults = dbc.find(pQuery, "2012-05-01", "2012-05-31");
...

2 个答案:

答案 0 :(得分:3)

MongoDB本身不支持这样的任何东西,但是再一次,它不需要太多意义,因为它需要每次都将查询发送到服务器。你可以简单 自己在应用程序中构造对象,只需通过更新正确的数组元素来修改特定的部分。

答案 1 :(得分:2)

你应该使用Jongo,一个基于mongo-java-driver的API。

以下是参数化查询的示例:

    collection.insert("{'date' : #}", new Date(999));               
    Date before = new Date(0);
    Date after = new Date(1000);

    Iterable<Report> results = collection.find("{'date' : {$gte : #}, 'date' : {$lte : #}}", before, after).as(Report.class);