分组后的跳过和限制在MongoDB中不起作用



分组后的跳过和限制在MongoDB查询中不起作用

我有100个项目,我想按状态分组,然后在其上添加分页。我想每个请求得到10个项目。当我运行我的查询,它返回给我所有的项目提供的名称。

这是我的例子

db.myCollection.aggregate([{
"$match": {
"name": "MyProject"    }
}, {"$group": {"_id": { "status" : { "$ifNull" : ["$data.status", null]}}, "records": {"$push": "$$ROOT"}}}, {"$skip": 0}, {"$limit": 10}]);

返回所有项目。

我该如何解决这个问题?我不能在分组之后进行限制,如果我在分组操作之前进行限制,它会进行限制,但分组不能正常工作。

使用$setWindowFields计算组排名,并使用相应的索引进行过滤。

db.projects.aggregate([
{
"$match": {
"name": "MyProject"
}
},
{
"$setWindowFields": {
"partitionBy": {
"$ifNull": [
"$status",
null
]
},
"sortBy": {
"createdDate": -1
},
"output": {
"inGroupRank": {
"$rank": {}
}
}
}
},
{
$match: {
inGroupRank: {
// pageSize: 5, pageIdx: 0
$gt: 0,
$lte: 5
}
}
},
{
$group: {
"_id": {
"$ifNull": [
"$status",
null
]
},
records: {
$push: "$$ROOT"
}
}
},
{
"$unset": "records.inGroupRank"
}
])

Mongo操场

相关内容

  • 没有找到相关文章

最新更新