如何在mongoose中获取中间文档?集合架构:
{ _id: string, points: number }
我想按点排序,然后按_id匹配,最终结果以matched _id为中心,抓取前50个和后50个。还包括基于排序的索引,这很好,但不是必需的。
lfapxunr1#
mongodb版本5.0之后的一个选项是使用$setWindowFields:
$setWindowFields
db.collection.aggregate([ {$setWindowFields: { sortBy: {points: -1}, output: { neighbors: { $push: "$$ROOT", window: {documents: [-N, N]} } } }}, {$match: {_id: _id}}, {$project: {neighbors: 1, _id: 0}}, {$unwind: {path: "$neighbors", includeArrayIndex: "index"}}, {$project: { _id: "$neighbors._id", points: "$neighbors.points", index: 1 }} ])
了解它在playground example上的工作原理
_id
$match
$lookup
1条答案
按热度按时间lfapxunr1#
mongodb版本5.0之后的一个选项是使用
$setWindowFields
:了解它在playground example上的工作原理
_id
,然后在$match
之后使用$lookup