如何使用Java从mongodb获取最后插入的N条记录?
Posted
技术标签:
【中文标题】如何使用Java从mongodb获取最后插入的N条记录?【英文标题】:How to get the last inserted N records from mongodb using Java? 【发布时间】:2015-10-12 23:36:16 【问题描述】:有一个类似的帖子使用 mongodb 脚本 mongodb: how to get the last N records?
如何通过 Java 获取最后插入的集合文档来实现相同的目标? 以防万一,我使用的是第三版的mongodb Java驱动,我在pom.xml中的mongodb依赖如下:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>3.0.2</version>
</dependency>
【问题讨论】:
【参考方案1】:使用 .limit()
db.foo.find().limit(50);
或者如果你想排序然后获取最后的记录,那么你可以这样做
db.foo.find().sort(_id:1).limit(50); and -1 for descending.
【讨论】:
它是一个java代码,你可以尝试做MongoDatabase db = client.getDatabase("test"); db.collection.find().sort(new Document("x", 1)).limit(n);如果您仍然遇到问题,可以将代码放在这里。我希望这能解决您的问题。 @Rashit,谢谢。 ("x", 1) 是什么意思,“x”是文档中的任何字段吗?这里的 1 是什么?怎么做“和-1降序”,代码是什么?顺便说一句“db.foo.find().sort(_id:1).limit(50)”没有编译。 是的 x 是任何字段。是的,只需使用 -1 以与上述相同的代码格式进行降序。也请采纳答案。谢谢。 这段代码未编译:FindIterable这是 MongoDB 版本 3 中的新语法,因此我无法使用建议的答案。所以工作代码如下:
MongoCollection<Document> coll = db.getCollection(<collectionName>);
FindIterable<Document> currentVersionDocumentIterable =
coll.find().sort(new Document("_id", -1)).limit(50);
内部排序需要插入“新文档”
【讨论】:
以上是关于如何使用Java从mongodb获取最后插入的N条记录?的主要内容,如果未能解决你的问题,请参考以下文章
Java MongoDB FindOne 获取最后插入的记录
如何从 MongoDB 集合中获取具有匹配键的最后 N 个元素