我有一个很大的MongoDB集合- 16 GB,1.3亿行。我需要查询数据库,只得到20%的数据。最好的选择是只获得每第5行,但随机选择20%也可以工作。示例不是一个好的选择,因为很可能发生重复。有什么建议吗?我该怎么做?
3b6akqbq1#
如果确实需要,可以选择使用$setWindowFields:
$setWindowFields
db.collection.aggregate([ {$setWindowFields: { sortBy: {_id: 1}, output: { index: { $sum: 1, window: {documents: ["unbounded", "current"]} } } }}, {$match: {$expr: {$eq: [{$mod: ["$index", 5]}, 0]}}}, {$unset: "index"} ])
了解它在playground example上的工作原理
1条答案
按热度按时间3b6akqbq1#
如果确实需要,可以选择使用
$setWindowFields
:了解它在playground example上的工作原理