0

そのため、MongoDBの集約フレームワークを使用しており、現在約70万のドキュメントが含まれているコレクションに対してクエリを実行しています。クエリは次のとおりです。

    db.logs.aggregate(
    {'$match' : { 'tag' : 'TAG-XYZ' }},
    {'$project' : {
      'tag' : '$common_tag.bId'
    }},
    {'$unwind' : '$tag'},
    {'$group' : {
      '_id' : '$tag',
      'total' : {'$sum' : 1}
    }},
    {'$sort':{'_id':1}},
    {'$skip':0},
    {'$limit':20}
    )

logs約20のフィールドが含まれています。tagは平均10個のタグの配列であり、common_tagいくつかの分類されたタグをタグ配列から分離して、のイニシャルの使用を排除する単なる埋め込みドキュメント$unwindですtag。私はページ付けを使用しているので、の値skipは可変です。クエリが使用されるため、固定結果のセットがないことに注意してください。

問題は、クエリの実行に少なくとも30秒かかることです。私の心配は、データセットが増え続けており、リアルタイム(またはほぼリアルタイム)のクエリ要件をサポートしていない可能性があることです。クエリを改善するためのより良い方法はありますか?

4

0 に答える 0