【问题标题】:How to retrieve a random document from a collection using the Mongo Java driver如何使用 Mongo Java 驱动程序从集合中检索随机文档
【发布时间】:2017-12-09 19:27:49
【问题描述】:

我是 Mongo Java 驱动程序的新手。我正在使用 3.4 Mongo Java 驱动程序。我正在尝试从集合中检索随机文档。

我搜索发现我必须使用$sample 来查找随机文档,但是当我尝试实现时,我无法检索它。

下面是我试过的代码。

MongoClient mongo = new MongoClient( "localhost" , 27017 ); 

MongoDatabase database = mongo.getDatabase("car_local"); 

MongoCollection<Document> collection = database.getCollection("assetSchemeSet");

collection.aggregate([ { $sample: { size: 1 } } ]);

如果有人可以帮助我,那将是一个很大的帮助。

【问题讨论】:

  • 您有什么错误或其他信息?这是 $sample 的正确语法。您只是没有返回任何文档吗?您确定 car_local 和 assetsSchemeSet 的拼写/存在吗?
  • 我收到编译错误 - “MongoCollection 类型的方法聚合(List extends Bson>)不适用于参数 ()”。当我执行 collection.count() 时,我可以看到计数
  • 您实际上是在混合 Java 和 Javascript 吗......?我认为 aggregation() 调用代表了您在 Java 中编码的内容。

标签: java mongodb mongodb-query aggregation-framework mongodb-java


【解决方案1】:

你可以使用Aggregates sample helper,像这样:

MongoClient mongo = new MongoClient( "localhost" , 27017 ); 

MongoDatabase database = mongo.getDatabase("car_local"); 

MongoCollection<Document> collection = database.getCollection("assetSchemeSet");

collection.aggregate(Arrays.asList(Aggregates.sample(1)));

这将通过执行 $sample 管道阶段返回 1 个文档。

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多