如何获得匹配$match的结果集以及计数。我试图得到最初的5条记录,包括完整的结果集,以及匹配的记录总数。
这是我的试用码:
let querySpec = [{
$match: {
entity: "project",
roles: {
$in: roles
},
deleteFlag: {
$exists: false
}
}
},
{
$group: {
_id: null,
count: { $sum: 1 }
}
},
{ $limit: event.rows },//5
{ $skip: event.first }//0
];
expected:
{[data:array[5],count:10]}
but getting :
{_id: null, count: 10}
尝试使用facet,但未能获取下一个结果集:
var querySpec = [
{
"$facet": {
"data": [
{
$match: {
entity: "project",
$or: [{
accessType: "Private",
userName: userName
}, {
accessType: "Public"
}],
}
},
{ $limit: event.rows },
{ $skip: event.first },
{ $sort: { [event.sortField]: event.sortOrder } }
],
"totalRecords": [
{
$match: {
entity: "project",
$or: [{
accessType: "Private",
userName: userName
}, {
accessType: "Public"
}],
}
},
{ "$count": "total" }
]
}
}
];
输出:{data: Array(5),totalRecords: Array(1)}但下一次分页单击它无法获取记录集{data: Array(0),totalRecords: Array(1)}:
发布于 2022-03-04 11:23:17
let querySpec = [
{
$match: {
entity: "project",
roles: {
$in: roles
},
deleteFlag: {
$exists: false
}
}
}, {
$facet: {
'data': [ // the key in which you want your data
// add sort here if needed
{
'$skip': event.first
}, {
'$limit': event.rows
}
],
'count': [
{
'$count': 'count'
}
]
}
}, {
'$addFields': {
'count': { // the key in which you want the count
'$arrayElemAt': [
'$count.count', 0
]
}
}
}]
尝试此操作,它将删除与查询不匹配的数据。此外,应在限制前使用跳过。
https://stackoverflow.com/questions/71337034
复制相似问题