使用java查询mongo oplog的时间戳字段

时间:2017-07-04 13:42:32

标签: java mongodb mongodb-query mongodb-oplog

我正在尝试使用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时间戳字段?

1 个答案:

答案 0 :(得分:1)

您可以使用“BsonTimeStamp”类型来构建过滤器。

BsonTimestamp lastReadTimestamp = new BsonTimestamp(time,inc);

Bson filter = new Document(“$ gt”,lastReadTimestamp);

dbCollection.find(new Document(“ts”,filter));