我正在尝试使用java查询mongo oplog集合的timestamp字段。
以下是代码。
BSONTimestamp timestamp1 = new BSONTimestamp(1499172935, 1);
BasicDBObject query1 = new BasicDBObject("ts", new BasicDBObject("$gt", timestamp1) );
DBCursor cursor = dbCollection.find(query1);
当我在上面的代码上运行时,它什么也没有返回。
以下是已转换的查询。
{ "ts" : { "$gt" : { "$ts" : 1499172935 , "$inc" : 1}} }
我使用robomongo执行相同的查询,它也不返回任何内容。
db.getCollection('oplog.rs').find({ "ts" : { "$gt" : { "$ts" : 1499172935 , "$inc" : 1}} })
但是当我将查询更改为使用Timestamp并执行它时,它返回oplog记录列表。下面是工作的mongo查询。
db.getCollection('oplog.rs').find({ "ts" : { "$gt" : Timestamp(1499172935 , 1)} })
如何使用java获取上述查询? 要么 有没有其他方法可以使用java查询oplog时间戳字段?
答案 0 :(得分:1)
您可以使用“BsonTimeStamp”类型来构建过滤器。
BsonTimestamp lastReadTimestamp = new BsonTimestamp(time,inc);
Bson filter = new Document(“$ gt”,lastReadTimestamp);
dbCollection.find(new Document(“ts”,filter));