5

你能用 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");
...
4

2 回答 2

4

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

于 2012-05-18T09:53:14.640 回答
3

你应该使用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);
于 2012-05-25T13:40:20.840 回答