私はスタックオーバーフロー全体をクロールしましたが、結果セットに含まれる適切なページネーションデータを返す方法に関する情報は見つかりませんでした。ページングされたデータと合計によるMongoの集約
私はmongoストアからいくつかのデータを集計しようとしています。私が欲しい、何かのリターンを持つことです。
{
total: 5320,
page: 0,
pageSize: 10,
data: [
{
_id: 234,
currentEvent: "UPSTREAM_QUEUE",
events: [
{ ... }, { ... }, { ... }
]
},
{
_id: 235,
currentEvent: "UPSTREAM_QUEUE",
events: [
{ ... }, { ... }, { ... }
]
}
]
}
これは私がこれまで持っているものです。
// page and pageSize are variables
db.mongoAuditEvent.aggregate([
// Actual grouped data
{"$group": {
"_id" : "$corrId",
"currentEvent": {"$last": "$event.status"},
"events": { $push: "$$ROOT"}
}},
// Pagination group
{"$group": {
"_id": 0,
"total": { "$sum": "corrId" },
"page": page,
"pageSize": pageSize,
"data": {
"$push": {
"_id": "$_id",
"currentEvent": "$currentEvent",
"events": "$events"
}
}
}},
{"$sort": {"events.timestamp": -1} }, // Latest first
{"$skip": page },
{"$limit": pageSize }
], {allowDiskUse: true});
私は内部の実際のグループ化されたデータを含む、rootとして改ページ・グループを持ってしようとしています(従って、私は実際の合計を得るが、まだskip
とlimits
を保持している)。
はMongoのコンソールで、次のエラーが返されます上記のコードは:私が削除した場合BSONObj size: 45707184 (0x2B96FB0) is invalid. Size must be between 0 and 16793600(16MB) First element: id: 0
: The field 'page' must be an accumulator object
私はまだ、次のエラーを取得し、ページネーショングループからpage
とpageSize
削除した場合ページ区切りのグループは、クエリが正常に動作します。しかし、私は実際に何個の文書を返す必要がありますか?total
、実際には必要ないものはpage
とpageSize
です。
誰かが私が間違っていることを教えていただけますか?または、これを一度に行うことが可能なのかどうか教えてください。
でそれを解決しました動作しないでしょう*?エラー?予想外の結果ですか?クエリのどの部分が失敗するのですか? –
上記の編集のようなエラーメッセージを追加しました –