gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:15 24 4
gpt4 key购买 nike

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

MongoDB.Driver.MongoQueryException: QueryFailure flag was getMore runner error: Overflow sort stage buffered data usage of 33554527 bytes exceeds internal limit of 33554432 bytes (response was { "$err" : "getMore runner error: Overflow sort stage buffered data usage of 33554527 bytes exceeds internal limit of 33554432 bytes", "code" : 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)。添加适当的索引应该可以解决此问题。看起来您的用户集合应该在 { groupId:1, _id:1} 上有一个复合索引。

复合键的顺序绝对重要。有关一些有用的背景阅读,请参阅:Optimizing MongoDB Compound Indexes .

关于c# - 如何解决 MongoDB 溢出排序阶段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28320037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com