我有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();
}
}
答案 0 :(得分:2)
您应该能够将聚合器选项传递给可查询对象。
collection.AsQueryable(new AggregateOptions { AllowDiskUse = true })
但是,通常情况下,以某种方式超过文档限制是一种迹象,表明您的查询不是最佳的。您可能需要重新考虑数据库设计或查询,以便不必对如此大的数据集进行排序。
答案 1 :(得分:0)
您真的需要提取馆藏的所有文件吗?