问题标签 [mongodb-indexes]
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.
mongodb - MongoDB索引有效性评估最佳实践
我们想评估我们的索引在基于 MongoDB 的 REST 服务设置中的有效性。想法是用合成数据集(例如 10,000,000 个文档)填充集合,然后运行负载注入器进程执行随机 REST 操作(每个操作都涉及 MongoDB 层的查询)以评估正在使用的索引和有关它们的统计信息(例如每个索引命中率)。
我们考虑过使用explain()命令或indexStats。然而,关于 explain(),它有两个问题:1) 它只允许评估单个查询的有效性,2) 在负载注入器进程与 REST 服务交互的“黑盒”环境中使用起来很困难在 MongoDB 上,但不是 MonoDB 本身。关于 indexStats,据我了解,它显示有关“磁盘上”的索引结构的信息,而不是有关索引使用情况的信息。
因此,哪种方法是进行这种测试的最佳方式?任何程序描述或有关该主题的信息的 URL 都非常受欢迎。
mongodb - Mongo:$exists 字段的索引
我有以下猫鼬模式:
对于某些 dataObjects,eventCount 已定义且为正数,对于其他 dataObjects,eventCount 未定义。我想设计一个索引,使这样的查询尽可能快:
做这个的最好方式是什么?
这是我能想到的最佳解决方案,但我很想知道是否有人有更好的解决方案:
将 isEventCount 布尔变量添加到 dataSchema。设置 mongoose 中间件,以便在使用以下逻辑将对象保存到 db 之前计算 isEventCount。
然后建立这样的索引
并像这样运行我的查询
这种方法有几个缺点。即:
- 我正在数据库中保存冗余信息。
- 我必须编写额外的中间件代码来实现这一点。
- 我必须修改数据库中的现有条目。
有人知道更好的解决方案或可以帮助解决此问题的库吗?
c# - MongoDB C# OfType() 索引行为
假设我对一个集合有这个查询:
并且这些特征通过以下方式索引(稀疏):
据我了解,C# 驱动程序在构建查询时使用类型信息DBFeature和DBPointFeature作为附加过滤器。
我想知道索引是否在类型查询之前应用,因此它将仅限于索引子集。
如果没有,它将首先获取特定类型的所有项目(这是一个比索引集大得多的集合),并且索引几乎没有意义。
在这种情况下 MongoDB 的行为是什么?
非常感谢!!
mongodb - 如果复合索引包含 2dsphere 索引,则索引前缀不起作用
MongoDB 版本:2.6.2
x
我在and上创建了一个复合索引location
,但是当我在 上查询时x
,为什么它不起作用?
mongodb - 如果有多个索引包含相同的字段,将使用哪个索引?
以 a 为例,find()
它涉及一个字段,a
并且b
按顺序排列。例如,
我的集合索引数组中有两个键:
是否保证mongo 将使用第一个键,因为它更准确地匹配查询,还是随机选择两个键中的任何一个,因为它们都可以工作?
mongodb - MongoDB 拒绝使用索引交集
我使用 MongoDB 2.6.4。
我的索引如下所示:
我的查询如下所示:
出于某种原因,它选择仅使用 1 个索引(非常慢:680 秒!!)
看起来它确实计算了复杂计划,但是决定不使用它,我不明白为什么。这是执行计划:
mongodb - 为什么这个 $elemMatch 查询不使用我的索引?
我的查询:
我的索引:
.explain() 结果:
为什么没有索引?
mongodb-indexes - mongodb 2.6.3 使用错误的索引
我有一个如下查询。显然更好的索引是“platform_1_keyuserAccountID_1_weiboAccountID_1_postTime_1”,但是 mongodb 选择“weiboAccountID_1”,我做错了吗?
mongodb - MongoDB索引相同键的不同数据类型
假设我有三个文档,其中存在“B”字段。这三个都有 3 种不同的数据类型。Index BTREE 是如何存储的?并且将“B”作为索引键是有效的吗?
例子。