2017-09-23 15 views
0

Mongoデータベースからドキュメントを取得し、内部ストレージにコピーしています。私は、これらのドキュメントを100個取り出して保存するのに数秒以上かかることがわかっています。パフォーマンスを改善するためにできることはありますか?いくつかのコレクションには1000を超えるドキュメントがあります。ここで私はMongoドキュメントの検索パフォーマンスを改善する方法

' get the documents from collection "reqitems" and put them in "collection" 
Dim collection As IFindFluent(Of BsonDocument, BsonDocument) = _ 
          reqitems.Find(Builders(Of BsonDocument).Filter.Empty) 
ReDim model.ReqItems(TotalCollection.ToList.Count) ' storage for the processed documents 
For Each item As BsonDocument In TotalCollection.ToList() 
    ' note: given a string a=x, "GetRHS" returns x 
    Dim parentuid As String = GetRHS(item.GetElement("parentuid").ToString) 
    Dim nodename As String = GetRHS(item.GetElement("nodename").ToString) 
    ' .... about a dozen of these elements 
    ' .... process the elements and copy them to locations in model.ReqItems 
next 

答えて

0

インデックスを追加しても効果がありませんでした。ドキュメントの要素に一度に1つずつアクセスします(ポストされたコードのGetRHS)。したがって、修正として、ドキュメントを文字列に変換してから、キーワードと値のペアの文字列を解析します。うまくいけば、私が見つけたものは、同じ問題の人を助けることができるかもしれない。

0

あなたはしていない場合は、あなたのコレクションにインデックスを追加することができます(vb.netで書かれた)しているものです。参考にしてください:https://docs.mongodb.com/manual/indexes/

また、実行統計情報で特定のMongodbクエリを実行することをお勧めします。例:db.mycollection.find().explain("executionStats");これは、クエリのパフォーマンスに関する統計情報を提供します。 https://docs.mongodb.com/manual/reference/explain-results/#executionstats

関連する問題