如何提高Mongo文档检索性能

时间:2017-09-23 13:59:39

标签: vb.net mongodb performance crud

我正在从Mongo数据库中检索文档并将它们复制到内部存储。我发现检索和存储一百个这样的文档需要花费几秒钟的时间。我能做些什么来提高性能吗?一些集合有超过1000个文档。这就是我所拥有的(用vb.net编写)

' 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

2 个答案:

答案 0 :(得分:0)

如果您尚未添加索引,可以添加索引。请参阅:https://docs.mongodb.com/manual/indexes/

另外,我建议使用执行统计数据运行特定的Mongodb查询。例如:db.mycollection.find().explain("executionStats");,它会为您提供有关查询性能的更多统计信息。 https://docs.mongodb.com/manual/reference/explain-results/#executionstats

答案 1 :(得分:0)

添加指数并没有多大帮助。减慢它的速度是一次访问一个文档中的元素(发布的代码中的GetRHS)。因此,作为修复,我将文档转换为字符串,然后解析字符串以获取关键字 - 值对。希望我发现的可以帮助有同样问题的人