MongoDB Java API-如何将示例聚合与查找查询相结合?

MongoDB Java API-如何将示例聚合与查找查询相结合?,java,mongodb,mongodb-query,Java,Mongodb,Mongodb Query,我需要在一个集合中获得一个随机的文档样本,该样本具有find标准 Bson sample = com.mongodb.client.model.Aggregates.sample(size); BasicDBObject query = new BasicDBObject().append("myKey", value); 如何将此示例聚合与查找查询相结合?您可以将聚合与$match一起使用,后跟$sample import static com.mongodb.client.model.Ag

我需要在一个集合中获得一个随机的文档样本,该样本具有
find
标准

Bson sample = com.mongodb.client.model.Aggregates.sample(size);
BasicDBObject query = new BasicDBObject().append("myKey", value);

如何将此
示例
聚合与
查找
查询相结合?

您可以将聚合与
$match
一起使用,后跟
$sample

import static com.mongodb.client.model.Aggregates.*;
import static com.mongodb.client.model.Filters.*;
import static java.util.Arrays.asList;

Bson match = match(eq("myKey", value));
Bson sample = sample(size);
collection.aggregate(asList(match, sample));

您的用例是什么?不能将聚合与常规查找操作结合使用。如果需要示例运算符,请使用聚合。我需要根据集合中的字段(布尔字段)对一些文档进行采样@尽管
db.coll1.count({key1:false,key2:true})
返回2946个文档,
Bson-sample=com.mongodb.client.model.Aggregates.sample(size);Bson match1=com.mongodb.client.model.Aggregates.match(eq(“key1”,true));Bson match2=com.mongodb.client.model.Aggregates.match(eq(“key2”,false));Bson matchFilters=和(match1,match2);mongoDB.getCollection(“coll1”).aggregate(asList(sample,matchFilters))
只返回46个文档。这个问题的原因是什么?你的样本量是多少?它将返回与样本大小相等的文档,并更改为聚合(asList(matchFilters,sample))Ok,更改聚合顺序后,现在它将按预期工作。非常感谢您的帮助,非常感谢。