首页 > 解决方案 > 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 的文档,但无法准确找到为什么它只在某些情况下使用。

这导致了我的问题:

标签: mongodbazure-cosmosdbazure-cosmosdb-mongoapi

解决方案


推荐阅读