Mongodb:如何选择文档的随机样本
您可以使用以下语法从 MongoDB 的集合中选择随机文档样本:
db.myCollection.aggregate([ { $sample : { size: 4 } } ])
此特定示例从名为myCollection的集合中随机选择4 个文档样本。
要选择不同大小的随机样本,只需更改大小参数中的值即可。
以下示例展示了如何在具有以下七个文档的收集团队的实践中使用此语法:
db.teams.insertOne({team: " Mavs ", points: 31}) db.teams.insertOne({team: " Spurs ", points: 22}) db.teams.insertOne({team: " Rockets ", points: 19}) db.teams.insertOne({team: " Warriors ", points: 26}) db.teams.insertOne({team: " Cavs ", points: 33}) db.teams.insertOne({team: " Hornets ", points: 30}) db.teams.insertOne({team: " Nets ", points: 14})
示例:在 MongoDB 中选择文档的随机样本
以下代码演示了如何从团队集合中随机选择4 个文档样本:
db.teams.aggregate([ { $sample : { size: 4 } } ])
该查询返回以下文档:
{ _id: ObjectId("6203ee711e95a9885e1e765d"), team: 'Cavs', points: 33 } { _id: ObjectId("6203ee711e95a9885e1e765b"), team: 'Rockets', points: 19 } { _id: ObjectId("6203ee711e95a9885e1e7659"), team: 'Mavs', points: 31 } { _id: ObjectId("6203ee711e95a9885e1e765f"), team: 'Nets', points: 14 }
请注意,此随机样本中包含以下四支球队:
- 酒商
- 火箭队
- 小牛队
- 网队
如果我们再次使用$sample函数,它将选择另一个随机文档样本,这意味着不能保证会选择同一组文档。
例如,假设我们从团队的集合中随机选择4 个文档样本:
db.teams.aggregate([ { $sample : { size: 4 } } ])
该查询返回以下文档:
{ _id: ObjectId("6203ee711e95a9885e1e765b"), team: 'Rockets', points: 19 } { _id: ObjectId("6203ee711e95a9885e1e765f"), team: 'Nets', points: 14 } { _id: ObjectId("6203ee711e95a9885e1e765e"), team: 'Hornets', points: 30 } { _id: ObjectId("6203ee711e95a9885e1e765c"), team: 'Warriors', points: 26 }
此随机样本中包含以下四支球队:
- 火箭队
- 网队
- 黄蜂队
- 勇士
请注意,此随机样本与上一个示例中的随机样本并不完全匹配。
注意:您可以在此处找到$sample函数的完整文档。
其他资源
以下教程解释了如何在 MongoDB 中执行其他常见操作:
MongoDB:如何检查字段是否包含字符串
MongoDB:如何使用“NO IN”查询
MongoDB:如何在特定字段中查询“NOT NULL”