【问题标题】:How to get the last inserted N records from mongodb using Java?如何使用Java从mongodb获取最后插入的N条记录?
【发布时间】: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>

【问题讨论】:

    标签: java mongodb collections


    【解决方案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 currentVersionDocumentIterable = coll.find(); currentVersionDocumentIterable.sort("name", 1).limit(50);
    • 试试 coll.find().sort("name",1).limit(50);
    【解决方案2】:

    这是 MongoDB 版本 3 中的新语法,因此我无法使用建议的答案。所以工作代码如下:

    MongoCollection<Document> coll = db.getCollection(<collectionName>);
    
    FindIterable<Document> currentVersionDocumentIterable =   
        coll.find().sort(new Document("_id", -1)).limit(50);
    

    内部排序需要插入“新文档”

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 2014-05-22
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多