如何从MongoDB获取N个随机文档(使用Yii2)?
是否有一些特殊方法,例如
Products::find()->random(20)->asArray()->all()
答案 0 :(得分:1)
假设您已创建数据库连接组件为mongodb
$collection = \Yii::$app->mongodb->getCollection('yourcollection');
$result = $collection->aggregate([
[
"\$sample" => ["size"=>20]
]
]);
vardump($result);
答案 1 :(得分:0)
就MongoDB而言,您可以使用聚合框架$sample(版本3.2中的新增功能)来实现此目的:
db.products.aggregate([
{ $sample: { size: 20 } }
])
以上聚合将从产品系列中选择20个随机文档。