MongoDB数据接收速度太慢

问题描述 投票:-3回答:1

我有大量字段的文件(每个字段7500个字段),但字段值是简单数据(仅限数字),当我尝试查询集合时,它工作得很好(我看看mongo profiler并正确使用索引)但它也需要很长时间迭代游标(接收数据)结果文件的数量是~450但是大约需要2分钟接收所有文件我已经更新了mongoDB版本到最后一个,还更新了MongoDB驱动程序(用于.NET),重新创建了索引但是无济于事

P.S连接速度不慢(BD服务器在我的本地网络--100Base-T /快速以太网)查询代码示例如下

        var builder = Builders<BsonDocument>.Filter;

        var filter = builder.Eq("OrgID", orgID);
        filter = filter & builder.Eq("DateDeleted", (DateTime?)null);

        var collection = GetCollection("NameOfCollection");
        var result = collection.Find(filter);

        using (var cursor = result.ToCursor())
        {
            while (cursor.MoveNext())
            {
                var batch = cursor.Current;
                foreach (var document in batch)
                {
                    yield return document;
                }
            }
        }

我分别有那些字段的索引,并且在一个索引中有两个字段的复合索引

它适用于集合,其中包含更多文档但字段更少(每个文档中约20个字段)

c# mongodb mongodb-.net-driver
1个回答
0
投票

你为什么用光标?我的理解是单独取出每条记录。我打赌如果你遍历ToList()而不是你会获得更好的性能,因为它会在一次调用中获取所有数据。

Foreach(var batch in collection.Find(filter).ToList()){
    // your other code here
}

此外,您正在产生结果,这意味着它嵌套在IEnumerable中,并且您在这些检索调用之间所做的任何事情都可能会减慢进程,但是您将代码保留了下来,因此很难说。

© www.soinside.com 2019 - 2024. All rights reserved.