Java MongoDB FindOne 获取最后插入的记录

2022-09-03 03:26:36

我正在向Mongo运行一个大型数据馈送,我需要让外部客户端连接到并从最后一个可用记录中点击提要 - 而不是任何早于当前记录的东西。我有一个可尾随的游标,它工作得很好,但它从表的开头开始,我想让它从最近插入的记录开始。我知道该怎么做,假设我有最后插入的记录_ID。我的问题是,我无法让findOne在Java中正常工作,以恢复最后插入的记录。简而言之,我需要这个Mongo JS命令的Java等效物:

db.market.findOne( {$query:{}, $orderby:{$natural:-1}} )

我发现这里有几个帖子看起来很相似,但他们假设客户端也是插入记录的人,并且已经知道最后一个可用的ID。

无论如何,正确的相应Java代码是什么来完成同样的事情 - 即获取最后一个可用记录的_ID?

我想作为替代方案,我可以让我的客户插入一次性记录,获取该ID,然后从那里开始,但我宁愿以正确的方式执行此操作。

谢谢


答案 1

需要明确的是,自然顺序不是广告订单,除非是上限集合。您将需要另一个条件来排序。

假设您使用的是默认的 ObjectID,则可以将其用作插入的衡量指标,因为默认值从插入时间(到毫秒)开始,并且始终是唯一的。

您还应该使用查找,而不是查找一个。请尝试以下操作:

db.market.find({}).sort({_id:-1}).limit(1)

答案 2

如果你想在你的JAVA代码中做到这一点,你可以这样做

Document myDoc = (Document)collection.find().sort(new BasicDBObject(<field>,-1)).first();

它将返回一个文档,该文档是按该重要字段排序的最后一个插入文档=)