【问题标题】:Querying timestamp field of mongo oplog using java使用java查询mongo oplog的时间戳字段
【发布时间】:2017-08-09 04:59:17
【问题描述】:

我正在尝试使用 java 查询 mongo oplog 集合的时间戳字段。

下面是代码。

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 时间戳字段?

【问题讨论】:

    标签: java mongodb mongodb-query mongodb-oplog


    【解决方案1】:

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

    BsonTimestamp lastReadTimestamp = new BsonTimestamp(time, inc);

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

    dbCollection.find(new Document("ts", filter));

    【讨论】:

      猜你喜欢
      • 2017-08-07
      • 2016-06-21
      • 2018-12-23
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 2020-10-11
      相关资源
      最近更新 更多