问题标签 [compound-index]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 具有复合索引 Mongodb 的高查询目标
我试图在 Mongodb 上创建一个复合索引。但是无论我尝试什么,我都有一个查询目标 1000-1500,而且这个 ID 只有 1000-2000 个文档。
我希望你能帮助我,尝试了一切。只是索引 eventid 具有相同的查询目标,大约为 1000
谢谢
mongodb - MongoDB - 具有相同结果的不同查询的索引使用情况
我有 2 个查询,结果与以下相同:
我有 2 个复合索引:field_3_field_1
和field_3_field_2
.
解释这两个查询的查询执行表明:
totalKeysExamined
查询 1 运行速度更快(3 次),搜索次数等于 1,并且更高totalDocsExamined
(这两个相同)并使用了上述索引中的 1 个。- 查询 2 运行速度较慢,搜索次数 (32) 高得多,而 和 低得多
totalKeysExamined
,totalDocsExamined
两个索引都被使用。
谁能解释这种行为以及推荐的查询方法是什么?谢谢。
mongodb - 我应该如何构建我的 MongoDB 组合索引?
我有一个由以下字段组成的 mongo 图像元数据集合:camera_name(str)、photographer_name(str)、resolution(str)、image_size(int in MB, rounded) 和 timestamp(10 digit UNIX timestamp)
我只想运行 2 个查询:
- 给定 camera_name,返回时间戳 <= 1639457261(示例 UNIX 时间戳)的记录。记录必须按降序排序
- 给定相机名称、摄影师名称、分辨率、图像大小和时间戳,我想检索记录,按输入的时间戳的降序排序。
我创建了 2 个索引:
{ "camera_name": 1, "timestamp": -1 }
{ "camera_name": 1, "photographer_name": 1, "resolution": 1, "image_size": 1, "timestamp": -1}
第一个索引有效,但是当我对第二个索引运行查询时,没有返回任何记录。我确信集合中存在记录,并且我希望在运行第二个查询时至少获得 10 条记录,但它返回一个空列表。
索引的配置方式有问题吗?谢谢
这是示例数据:
我执行的查询:
- camera_name=Nikon and timestamp<=1503582086 应该返回 4 条记录
- camera_name='Fuji' ,photographer_name='Beth', resolution='1920x1080', image_size='5' and timestamp<=1900000000 应该返回 2 条记录,但我得到 0 条记录
mongodb - mongo 查询不会触发复合索引
我有成千上万的文件是这样的:
(这是我的数据库中更大文档的过度简化版本,包含更多字段。数据库包含数百万个文档)。这是我想用于计数执行的过滤器:
我想要做的是创建一个这样的索引:
并让查询使用它。但mongo实际上忽略了它。相反,mongo 正在使用另一个索引,即
执行统计数据显示了这个阶段:
- IXSCAN 对 {"field_id":1, "anotherField":1} 索引,产生 500k 个keysExamined,这是 500k 个具有 field_id = 'abcd' 的文档
- 获取过滤器的其余部分,返回 20k 作为计数
当然,如果 mongo 使用了正确的索引,我希望它已经从 IXSCAN 检索到 20k 文档,或者至少是更接近的数字。
我只是不明白为什么 mongo 不使用该索引。我还尝试更改索引中字段的顺序,但没有成功。我正在使用 Mongo 4.4.6
mongodb - 如何优化 Mongo 查询的 FETCH 阶段?
我有以下查询
这个查询使用的索引是
阶段是
IXSCAN(对于 Origin.SN = 5701099)-> IXSCAN(对于 Origin.SN = 5701097)-> SORT_MERGE -> FETCH -> SKIP -> LIMIT
我可以看到排序也发生在索引上,因此该部分得到了优化。但问题在于 FETCH 阶段。那里的过滤器如下
这部分没有优化。即使我创建了一个像 productLowerCase_1 这样的索引并将查询更改为使用左锚定正则表达式,该索引甚至也没有在 FETCH 阶段使用。MongoDB 在查询中是否只使用一个索引?有什么办法可以让它在查询中使用 productLowerCase_1 索引和 type_1_Origin.SN_1_timestamp.milliseconds_-1 索引?
mongodb - 如何在 mongodb 中为特定文档创建复合索引
我正在运行 MongoDB 4.2,请看下面我的文档的样子:
底线是我需要创建一个复合索引,以提高查询的性能,以查找具有“转移”的“结果类型”的品种,我不确定如何将下面的命令缩小到仅具有结果类型=转移
mongodb - Mongo中的复合索引
在性能和快速性的情况下,唯一索引是否像复合索引一样执行和返回查询数据?
mongodb - NestJS Mongodb 复合索引
我目前正在用 Nest js 编写 mongodb 模式。
我的架构如下
- 有没有办法为集合创建 nestJs 模式?
- 有没有办法为 _id 字段设置索引?
我尝试了以下方法,但没有奏效。
检查文档后,我找不到该问题的答案。请帮我