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

时间:2018-10-22 20:29:26

标签: c# .net mongodb mongodb-query mongodb-.net-driver

我有2周的学习和使用MongoDB的时间,我正在使用DataGridview构建一个简单的WinForm APP。

一切正常,但是我添加了超过1.000.000个文档,现在它向我显示此错误:

  

MongoDB.Driver.MongoCommandException:'命令聚合失败:排序超出了104857600字节的内存限制,但未选择使用外部排序。中止操作。传递allowDiskUse:true以选择加入。”

我已经检查了我所有的周末Google如何使用Aggreate allowDiskUse:true,但是它也不起作用。

谢谢。

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();
    }
}

2 个答案:

答案 0 :(得分:2)

您应该能够将聚合器选项传递给可查询对象。

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

但是,通常情况下,以某种方式超过文档限制是一种迹象,表明您的查询不是最佳的。您可能需要重新考虑数据库设计或查询,以便不必对如此大的数据集进行排序。

答案 1 :(得分:0)

您真的需要提取馆藏的所有文件吗?