CosmosDB Mongo v.4.0 抛出查询超出最大允许内存使用量 40 MB

CosmosDB Mongo v.4.0 throws Query exceeded the maximum allowed memory usage of 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 个文档要用“条形图”查询,我想用我正在构建的查询提取这些文档:

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);

我正在使用 MongoDb.Driver for .Net v.2.12.3(最新稳定版) 我在集合

上创建了通配符索引

为什么当 mongo 服务器升级到 4.0 时我仍然在 AppService 上看到 40 MB 的问题,为什么它在本地工作?

为什么用 IMongoQueryable 构造的查询在 AppService 中不起作用,但用 IMongoQuerable 构造的查询可以正常工作并且 returns 正确的结果?

Post 结束本题的答案:

将端点从 documents.azure.com 更新为 mongo.cosmos.azure 修复此问题。