azure - CosmosDB Mongo v.4.0 抛出查询超出了 40 MB 的最大允许内存使用量
问题描述
我请求帮助,因为我在 CosmosDB 中的 MongoDb 服务器上仍然面临 40MB 问题,尽管我已将版本升级到 4.0(40MB 问题已在 3.6 中修复)。
我有一个使用 IMongoQerableInterface 构建的简单查询。
protected Task<List<TEntity>> GetAllAsync(IMongoQueryable<TEntity> query)
{
return query.ToListAsync()
}
来自存储库的上述方法稍后将在服务中等待。翻译后的查询如下所示:
{aggregate([{ "$match" : { "Foo" : "Bar", "IsDeleted" : false } }])}
我有大约 20k 个文档要使用“Bar”进行查询,我想使用我正在构建的查询来提取这些文档:
var result = await GetAllAsync(DbQueryableCollection
.Where(x=> x.Foo == "Bar" && x.IsDeleted == isDeleted))
在我的本地机器上进行本地测试时,它工作正常。发布到 Azure AppService 时,我收到一个错误:
“命令聚合失败:查询超过了 40 MB 的最大允许内存使用量。请考虑添加更多过滤器以减少查询响应大小..”
当我执行相同的查询但不使用 IMongoQuerable 而是使用带有过滤器的 IMongoCollection.FindAsync() 作为参数时,它在 AppService 上运行良好。
下面工作正常。
var result = await DbCollection.FindAsync(x => x.Model == model && x.IsDeleted == isDeleted);
我正在为 .Net v.2.12.3 使用 MongoDb.Driver(最新稳定版)我在集合上创建了通配符索引
为什么当 mongo 服务器升级到 4.0 时 AppService 上仍然出现 40 MB 问题,为什么它在本地工作?
为什么使用 IMongoQueryable 构造的查询在 AppService 中不起作用,但使用 IMongoQuerable 构造的查询可以正常工作并返回正确的结果?
解决方案
发布答案以结束此问题:
将端点从documents.azure.com 更新为mongo.cosmos.azure 修复此问题。
推荐阅读
- command-line - 在 nbconvert 之前保存 Jupyter 笔记本
- python - 在 Python 中提取值
- sql - 与 sum() 一起选择列
- c# - 这个 for 循环不止一次地循环遍历相同的值吗?
- c - 定义一个接受多种类型的 API,每种类型都有自己的可能值范围
- php - Laravel LDAP 身份验证不起作用 - LdapRecord 包
- powershell - 如果 Outlook 已在运行,则使用 powershell 在 Outlook 中发送电子邮件而不锁定
- mongodb - 猫鼬在数组列表中按_id查找集合
- c# - 没有表单的操作按钮 | ASP.NET CORE Razor 页面
- javascript - 如何在选项卡式导航中突出显示选定的选项卡