我正在尝试将正常运行的Mongo Shell查询转换为Java,但似乎遇到了麻烦。我正在使用mongo-java-driver:3.9.1。 shell查询如下所示:
db.getCollection('xyz').find({source_id: ObjectId("abc"), timestamp: {
$gte : ISODate("2019-04-05 18:24:00.000Z"),
$lt: ISODate("2019-04-05 18:30:00.000Z")
}
})
查询包含两个条件:匹配的source_id和两个给定日期之间的时间戳。
我的Java查询如下(startDate和endDate是格式化的日期):
FindIterable<Document> cursor = collection.find(and(eq("source_id", new ObjectId("abc"))), and(gte("timestamp", startDate), lt("timestamp", endDate)));
Intellij给我消息:“无法解析方法'find(org.bson.conversions.Bson,org.bson.conversions.Bson)”。这是逻辑错误,还是无法建立类似的过滤器?
答案 0 :(得分:1)
您缺少一个and
:
FindIterable<Document> cursor = collection.find(and(and(eq("source_id", new ObjectId("abc"))), and(gte("timestamp", startDate), lt("timestamp", endDate))));
总体思路是:将每个{
视为一个包含and
的语句。