Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb C#查询排序超出内存限制_C#_.net_Mongodb_Mongodb Query_Mongodb .net Driver - Fatal编程技术网

Mongodb C#查询排序超出内存限制

Mongodb C#查询排序超出内存限制,c#,.net,mongodb,mongodb-query,mongodb-.net-driver,C#,.net,Mongodb,Mongodb Query,Mongodb .net Driver,我有两周的时间学习和使用MongoDB,我正在用DataGridview构建一个简单的WinForm应用程序 一切正常,但我添加了1.000.000多个文档,现在它显示了以下错误: MongoDB.Driver.MongoCommandException:'命令聚合失败:排序超出了104857600字节的内存限制,但未选择外部排序。正在中止操作。Pass allowDiskUse:选择加入时为true..' 我整个周末都在谷歌上查看如何使用Aggreate allowDiskUse:是的,但它也

我有两周的时间学习和使用MongoDB,我正在用DataGridview构建一个简单的WinForm应用程序

一切正常,但我添加了1.000.000多个文档,现在它显示了以下错误:

MongoDB.Driver.MongoCommandException:'命令聚合失败:排序超出了104857600字节的内存限制,但未选择外部排序。正在中止操作。Pass allowDiskUse:选择加入时为true..'

我整个周末都在谷歌上查看如何使用Aggreate allowDiskUse:是的,但它也不起作用

谢谢

public void ReadAllDocuments()
{
    List<Clientes> list = collection.AsQueryable().OrderBy(q => q.Nombre).ToList();

    dataGridView1.DataSource = list;
    if (dataGridView1.Rows.Count > 0)
    {
        textBox1.Text = dataGridView1.Rows[0].Cells[0].Value.ToString();
        textBox2.Text = dataGridView1.Rows[0].Cells[1].Value.ToString();
        textBox3.Text = dataGridView1.Rows[0].Cells[2].Value.ToString();
    }
}
public void ReadAllDocuments()
{
List List=collection.AsQueryable().OrderBy(q=>q.Nombre.ToList();
dataGridView1.DataSource=列表;
如果(dataGridView1.Rows.Count>0)
{
textBox1.Text=dataGridView1.Rows[0]。单元格[0]。Value.ToString();
textBox2.Text=dataGridView1.Rows[0]。单元格[1]。Value.ToString();
textBox3.Text=dataGridView1.Rows[0]。单元格[2]。Value.ToString();
}
}

您真的需要获取集合中的所有文档吗?

您应该能够将聚合器选项传递给查询表

collection.AsQueryable(new AggregateOptions { AllowDiskUse = true })

然而,通常情况下,通过排序超过文档限制表明您的查询不是最优的。您可能需要重新考虑数据库设计或查询,这样就不必对如此庞大的数据集进行排序。

这不是问题的答案,因此应该将其作为评论发布Hi Vicenzo!不是我在学习,只是出于好奇,我创建了一个for循环,用1.000.000个文档使我的数据库过饱和,现在我了解了这么多的查询规则,这很有趣。但在我的情况下,答案聚合器选项非常有效!感谢您的关注。您应该限制从MongoDb检索的项目数量,请参阅通过调用ToList()您可以检索一百万个文档。不管Mongo的内存限制如何,您都无法在DataGridView中看到它。@RuiJarimba非常感谢!!是的,我应该限制它!我在学习,但我不知道。我创建了一个for循环来过度饱和我的DB。现在我明白规则了。谢谢你的回答。非常感谢!!终于成功了。我知道我真的不打算处理这么多的文档,只是好奇我创建了一个for循环来过度饱和我的数据库,真的到目前为止我还没有处理过这么大的项目。谢谢你的提示,我的朋友。我会继续学习。