Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
C# 如何解决MongoDB溢出排序阶段错误?_C#_Mongodb_Overflow_Mongodb Query - Fatal编程技术网

C# 如何解决MongoDB溢出排序阶段错误?

C# 如何解决MongoDB溢出排序阶段错误?,c#,mongodb,overflow,mongodb-query,C#,Mongodb,Overflow,Mongodb Query,我正在使用Windows 7中的MongoDB 2.6.7(64位)和MongoDB C#Driver 1.10.0,我遇到以下错误: MongoDB.Driver.MongoQueryException:QueryFailure标志为getMore runner错误:33554527字节的溢出排序阶段缓冲数据使用量超过33554432字节的内部限制(响应为{“$err”:“getMore runner错误:33554527字节的溢出排序阶段缓冲数据使用量超过33554432字节的内部限制”,“

我正在使用Windows 7中的MongoDB 2.6.7(64位)和MongoDB C#Driver 1.10.0,我遇到以下错误:

MongoDB.Driver.MongoQueryException:QueryFailure标志为getMore runner错误:33554527字节的溢出排序阶段缓冲数据使用量超过33554432字节的内部限制(响应为{“$err”:“getMore runner错误:33554527字节的溢出排序阶段缓冲数据使用量超过33554432字节的内部限制”,“代码”:17406})

我在C#中运行的查询是:

var query=query.EQ(c=>c.GroupId,GroupId);
返回集合。查找(查询)
.SetSortOrder(按升序排序(用户ID))
.SetSkip(第*页记录)
.SetLimit(记录)
.ToList();
我对GroupId属性使用单个索引,并且ID(带有_ID值)属性具有默认索引

我发现MongoDB中有一个相关的bug:


如何解决此错误?

您强调的服务器问题与此无关。您遇到的错误表明内存排序的数据太多(>32Mb)。添加适当的索引可以解决此问题。看起来您的用户集合应该在
{groupId:1,\u id:1}
上有一个复合索引


复合键的顺序绝对重要。有关一些有用的背景资料,请参阅:。

您突出显示的服务器问题实际上并不相关。您遇到的错误表明数据太多(>32Mb),无法访问。添加适当的索引可以解决此问题。看起来您的用户集合应该在
{groupId:1,\u id:1}
上有一个复合索引。很抱歉,我使用了顺序相反的组合键:{u id:1,groupId:1},但它不起作用。我按照你的命令{groupId:1,{u id:1}做了,成功了!非常感谢。
var query = Query<User>.EQ(c => c.GroupId, groupId);

return Collection.Find(query)
                 .SetSortOrder(SortBy.Ascending(User.ID))
                 .SetSkip(page * records)
                 .SetLimit(records)
                 .ToList();