db.getCollection("table_name").aggregate({ $sample: { size: 条数 }})
类似于sql Select * From table_name Order By RAND() Limit 条数;
其中$sample是aggregate的管道操作符可单独使用,也可同其他操作符联用。
注:结果集合可能会多条相同文档
一、无条件随机查询
eg. 1:在表(xjis)里返回10条文档(注:原表数据量为1,094)
db.getCollection("xjis").aggregate([{ $sample: { size: 10 }}])
eg.1eg. 2:在表(xjpy)里返回80条文档(注:原表数据量大于1,000,000)
db.getCollection("xjpy").aggregate([{ $sample: { size: 80 }}])
eg.2二、有条件随机查询
添加筛选条件可用管道操作符$match,但$match需在$sample前。
eg. 1:在表(xjis)里返回10条article_year值为2014的文档(注:原表数据量为1,094)
db.getCollection("xjis").aggregate([{ $match:{"article_year":2014}},{ $sample: { size: 10 }}])
eg.1eg. 2:在表(xjpy)里返回80条article_year值为2014的文档(注:原表数据量大于1,000,000)
db.getCollection("xjpy").aggregate([{ $match:{"article_year":2014}},{ $sample: { size: 80 }}])
eg.2
网友评论