KeystoneJSでは、現在集計を使用してMongoを照会し、全体のセットを取得して戻しています。さて、私たちはより多くのデータを取得しており、改ページする必要があります。 KeystoneJSはページネーションをサポートしていますが、見た目からはwhereオプションパラメータでfindコマンドだけをサポートしています。 KeystoneJSによって提供されるページネーションが集計クエリの結果をページ付けする方法はありますか?KeystoneJSリスト集計結果のページング
例集計クエリ:
keystone.list('Posts').model.aggregate([
{'$match': {"state":"published"}},
{'$unwind': {'path':"$actions", 'preserveNullAndEmptyArrays': false}},
{'$lookup': {
'from':"actions",
'localField': "actions",
'foreignField': "_id",
'as': "actions"}},
{'$match': {"actions.key": action}},
{'$unwind': {'path':"$postTopics"}},
{'$lookup': {
'from':"posttopics",
'localField': "postTopics",
'foreignField': "_id",
'as': "posttopics"}},
{'$match': {"posttopics.key": topic}},
{'$unwind': {'path':"$postSubTopics"}},
{'$lookup': {
'from':"postsubtopics",
'localField': "postSubTopics",
'foreignField': "_id",
'as': "postsubtopics"}},
{'$match': {"postsubtopics.key": subtopic}},
{'$unwind':
{'path':"$postSubTopics",
'preserveNullAndEmptyArrays': true}},
{'$unwind':
{'path':"$postTopics",
'preserveNullAndEmptyArrays': true}},
{'$lookup': {
'from':"postsubtopics",
'localField': "postSubTopics",
'foreignField': "_id",
'as': "postsubtopics"}},
{'$lookup': {
'from':"posttopics",
'localField': "postTopics",
'foreignField': "_id",
'as': "posttopics"}},
{'$match': {
'$or':
[
{ "postsubtopics.searchKeywords": keyword },
{ "posttopics.searchKeywords": keyword }
]
}}
]).sort('-publishedDate');
私が通じページ付けできるようにしたいと思い、このから戻って返す結果は。私はそれをやるためにmongooseを使ったり、javascriptで配列をフィルタリングしたりしていますが、Keystoneにはページネーションが組み込まれていることがわかっているので、これがサポートされているかどうかを質問したいと思います。
ありがとうございます。上記のクエリを試しただけでなく、多くのバリアントを試しましたが、どちらもうまくいきませんでした。上記の例では、集合体は関数ではないと不平を言っています。私はすべてのデータを取得してJSで自分自身のページングを行っています。 Mongoの集約フレームワークは人気が高まっているようですが、検索クエリの代わりに集約をサポートするためのキーストーンページネーション用の単純なプラグアンドプレイがあれば興味がありました。 – lshaffer