すべてのデータを集めるのに約30秒かかると集約関数の実行速度が非常に遅いという問題に直面しています。この構造では、レコードの1を仮定しますMongoDBの遅い集約時間
{
"_id":{
"$oid":"5909a5cefece40f172895a6b"
},
"Record":1,
"Link":"https://www.google.com",
"Location":["loc1", "loc2", "loc3"],
"Organization":["org1", "org2", "org3"],
"Date":2017,
"PeoplePPL":["ppl1", "ppl2", "ppl3"]
}
および集計クエリを次のように
db.testdata_4.aggregate([{
"$unwind": "$PeoplePPL"
},{
"$unwind": "$Location"
},{
"$match": {
Date: {
$gte: lowerBoundYear,
$lte: upperBoundYear
}
}
},{
"$group": {
"_id": {
"People": "$PeoplePPL",
"Date": "$Date"
},
Links: {
$addToSet: "$Link"
},
Locations: {
$addToSet: "$Location"
}
}
},{
"$group": {
"_id": "$_id.People",
Record: {
$push: {
"Country": "$Locations",
"Year": "$_id.Date",
"Links": "$Links"
}
}
}
}]).toArray()
154のレコードの合計が「testdata_4」コレクションであり、かつ集約すると、そこに意志を2871の照会時間で5571レコードが戻されます。私は "Locations"と "Date"にensureIndex()を実行しました。返されるレコードの数が増えると、これは正常であると思われますか?それが正常でない場合は、クエリ時間を28秒以上にするのではなく、最大で5秒に短縮するための回避策があるかどうかを知ることができますか?ありがとうございました!どのような解決策が提供されているのが最も感謝です!