我必须编写一个简单的MongoDB查询,java但我无法做到.
mongo查询如下所示:
db.yourCollection.find({"$where" : "this.startDate < this.endDate"})
Run Code Online (Sandbox Code Playgroud)
我必须使用QueryBuilder该类编写上述查询.但我不能在MongoDB java司机中做到这一点.
BasicDBObject document = new BasicDBObject();
document.put("id", 1001);
document.put("intValue", 1200);
document.put("updateValue", 2100);
DBObject query = QueryBuilder.start("intValue").lessThan("updateValue").get();
DBCursor cursor = collection.find(query);
while (cursor.hasNext()) {
System.out.println("Result : -"+cursor.next());}
Run Code Online (Sandbox Code Playgroud)
上面的代码不会返回任何结果.但如果改成updateValue了2100它就会给出结果.我的问题是lessThan将对象作为输入参数.那么如何将文档字段作为输入参数传递?
Roh*_*ain 13
理想情况下,您的mongoDB查询应如下所示: -
db.yourCollection.find({"startDate": {$lt: endDate}})
Run Code Online (Sandbox Code Playgroud)
可以像这样用Java编写: -
BasicDBObject query = new BasicDBObject("startDate", new BasicDBObject("$lt", endDate);
DBCursor cursor = coll.find(query);
Run Code Online (Sandbox Code Playgroud)
你可以看看官方教程
如果你想使用QueryBuilder,你可以这样做: -
DBObject query = QueryBuilder.start("startDate").lessThan("endDate").get();
DBCursor cursor = coll.find(query);
Run Code Online (Sandbox Code Playgroud)
QueryBuilder 帮助构建复杂的查询以从 mongo db 的集合中检索数据。您可以像这样使用 QueryBuilder。
BasicDBObject document = new BasicDBObject();
QueryBuilder qb = new QueryBuilder();
qb.or(new QueryBuilder().put("starting_date").is(null).put("ending_date").is(null).get(),
new QueryBuilder().put("starting_date").lessThanEquals("ending_date").get());
document.putAll(qb.get());
DBCursor cursor = getDbCollection().find(document)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32933 次 |
| 最近记录: |