繁体   English   中英

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

[英]How can I solve the MongoDB Overflow sort stage error?

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

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

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

var query = Query<User>.EQ(c => c.GroupId, groupId);

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

我正在为GroupId属性使用单个索引,并且ID(带有_id值)属性具有默认索引。

我看到MongoDB中存在一个相关的错误:

https://jira.mongodb.org/browse/SERVER-14174

我该如何解决这个错误?

您突出显示的服务器问题并不真正相关。 您遇到的错误表示内存中排序的数据太多(> 32Mb)。 添加适当的索引应解决此问题。 看起来您的User集合应该在{ groupId:1, _id:1}上有一个复合索引。

复合键中的顺序绝对重要。 有关一些有用的背景阅读请参阅: 优化MongoDB复合索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM