mongodb - Cosmos DB Mongo API | 间歇性高价查询 | 使用 Mongo 命令 getMore “查找”
问题描述
我有一个间歇性消耗大量 RU 的 Cosmos DB 查询。在大多数情况下,请求费用约为 1000 RU,但在其他情况下高达 80,000 RU。我正在使用 Cosmos DB 的 Mongo API 并使用 Node.js Mongo 驱动程序来查询数据库。
这是更改了一些字段名称的查询:
const query = {
state: 'FOO',
startDate: { $lt: new Date() },
$or: [
{ takeActionOn: null },
{ takeActionOn: { $lt: new Date() } }
]
}
db.collection(collectionName)
.find(query)
.limit(250);
查询中的所有字段都已编入索引,但不包括 Partition Key。我一直在使用 Cosmos DB 命令“getLastRequestStatistics”调查此问题。该命令的响应包含 CommandName、RequestCharge 和其他一些元数据。
我发现在 RU 成本低的情况下,从 getLastRequestStatistics 返回的 CommandName 是“find”,而在 RU 成本高的情况下,CommandName 是 getMore。我找到了有关 MongoDB 服务器为什么/何时使用 getMore 的文档,但无法准确找到为什么它只在某些情况下使用。
这导致了我的问题:
- 在什么条件下会使用 getMore?
- 如何修改查询以降低 RU 成本并避免使用 getMore?(在这里设置一个 batchSize 选项会有帮助吗?)
解决方案
推荐阅读
- reactjs - 错误:“未定义不是对象(评估'_reactNative.Stylesheet.create')(设备”
- excel - 检查单元格是否包含列表中的字符串
- ios - 如何在 Swift 中切换到导航控制器的根目录?
- css - 适应儿童身高的砌体布局
- javascript - 编写时在内容可编辑 div 的底部保持填充
- analytics - Agora Analytics (BETA) Rest API 不适用于路由 /analytics/call/lists 路由
- flutter - Facebook内部的firebase动态链接显示错误的网页
- javascript - 如何检测窗口是否在 JavaScript 中具有焦点?
- python - 如何更改递归函数
- android - Jetpack Compose 互操作性 - 保留视图实例