在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');
,從這個我想是能夠通過分頁返回回來的結果。我正在探索使用貓鼬做它,或者只是用javascript過濾數組,但是由於我看到Keystone已經內置了分頁,我想問問貢獻者是否支持。
感謝您的意見。我已經嘗試過上面顯示的查詢,並且嘗試了很多變體,但都沒有奏效。你上面的例子抱怨聚合不是一個函數。我確實已經掌握了所有數據,並使用JS自己執行分頁。 Mongo中的聚合框架似乎越來越流行,我只是好奇,是否有一個簡單的即插即用的keystone分頁來支持聚合而不是find查詢。 – lshaffer