问题标签 [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.
ruby-on-rails - 多列唯一导轨索引无法正常工作
我正在努力解决这个问题:
我有一个User
带有电子邮件和辅助电子邮件的模型,他们可以用来登录。用户不应与其他用户拥有相同的电子邮件/辅助电子邮件。两列也应该是相互唯一的。
发生了什么
但是,我的索引仅验证它们自己列中的唯一性。因此,一个用户不能拥有与另一个用户相同的电子邮件,他们也不能拥有与另一个辅助电子邮件相同的辅助电子邮件。
确保两列各自唯一的索引,并为电子邮件和辅助电子邮件添加唯一索引
期待什么
用户不应将数据库中存在的电子邮件用作电子邮件或辅助电子邮件。
migration.rb
我已经尝试了索引排列的所有组合。如果没有底部的单个索引,用户可以拥有相同email
的 s,只要他们secondary_email
的 s 是唯一的。
mongodb - MongoDB 复合稀疏索引
我有一个跟随复合索引:
该索引禁止插入两个具有相同名称和父级的文档,例如:
那没问题。现在,如果名称为空(或不存在),我想添加多个具有相同父级的文档(例如通过稀疏单个索引)。有可能吗?例子:
mongodb - MongoDB 不使用我的索引
我有一个包含数百万条记录的日志集合。创建新索引需要“永远”。所以最好使用现有的索引。
现在我想获取某些错误代码的出现次数。我使用这个查询,并且在功能上它工作正常:
问题是仅仅执行一天就需要将近 10 秒。我假设将使用以下索引timeStamp_-1_objData.@.ErrorCode_1
:
然而,MongoDB 似乎坚持使用一些timeStamp: 1
索引(以及一些与查询无关的其他索引),并扫描所有结果以查看是否有一些响应可能ErrorCode
附加,即使这些信息应该在索引中。
这是explain()
:
- 有没有办法使用
timeStamp_-1_objData.@.ErrorCode_1
索引来加快速度? - 为什么不使用这个索引?我可能误解了此查询中如何使用索引。
在 OSX 上运行 MongoDB 3.2.7。
注意:我也尝试$empty: true
过代替$ne: null
. $empty
它产生相同的结果,但有人说如果你想使用复合索引就不能使用。不过,有关 Stack Overflow 的许多问题都是旧的(mongo 2.x)。
mongodb - Mongodb复合索引 - 也内置_id排序?
我有一个复合索引
我想支持两个查询:
和
我很困惑是否需要第二个复合索引来按 _id 排序,或者它是否“内置”到我的复合索引中?(根据 mongodb 文档,我的复合索引还应该支持 userID:1、connectionStatus:1 查询(但我可以按什么顺序对它们进行排序?按 _id ?)。所以我需要在 _id 或 created 上添加另一个复合索引?
mongodb - MongoError:E11000 唯一复合索引的重复键错误集合
问题与
unique compound
索引有关,这与其他仅具有unique
索引的此类问题不同。我也有sparse: true
索引。
我的收藏中有以下索引
我在集合中有以下文档
现在当我尝试执行以下
db.votes.insert({ questionId: ObjectId("59fc798d5a857465a90339cf"), value: -1, votedBy: ObjectId("59fc4274aa686d39abe5d58a"), type: 'QuestionVote', _id: ObjectId("5a003240bfd8194a02d0add8") })
我收到以下错误
我不明白原因。索引是sparse
和compound
。但错误只是因为存在相同的votedBy
字段。
即执行以下,
即使votedBy
对象上没有明确的索引,我也会收到以下错误。
参考:复合索引 - https://docs.mongodb.com/manual/core/index-compound/#compound-indexes
mongodb - 数组字段上的唯一复合索引
我正在尝试使用复合索引创建 mongo 文档。我的示例文档看起来像这样
{ fname:“fname1”,lname:“lname1”,任务:[“t11”,“t12”,“t13”]}
{ fname:“fname2”,lname:“lname2”,任务:[“t21”,“t22”,“t23”]}
{ fname:“fname3”,lname:“lname3”,任务:[“t31”,“t32”,“t33”]}
索引如下
createIndex({ fname: 1, lname: 1, task: 1 }, { unique: true, name: 'some-index-name'})
我期待的是
如果有任何变化
- fname或
- 名字或
- 任务(任何部分数据更改 - 至少一个元素)
应被视为独特的文件。
我收到此异常“ E11000 重复密钥错误集合”
我查看了闲置的链接。但无法弄清楚。
https://docs.mongodb.com/manual/core/index-partial/
mongodb - Mongo 拒绝使用复合索引中的所有字段
我有一个大型数据库和许多复合索引。问题是,mongo 不使用索引中的所有字段进行查询,它只使用 4 个字段中的 2 个字段,即使所有 4 个字段都在复合索引中。或者它使用 3 字段复合索引而不是 4 字段。
这是我的架构(数据和元数据中还有其他字段,但在此查询中未使用它们):
我有这些索引:
这是我的查询:
这是我从解释中得到的:
如您所见,出于某种原因,mongo 不使用 4 字段索引,即使我提示索引,它也只使用两个第一个字段(“store_id”和“meta.is_published”)。它倾向于选择仅涵盖 3 个字段(“store_id”、“meta.is_published”和“data.id”)的 3 字段索引,这有点道理,前提是从 4 字段索引中只使用 2 个字段。但为什么?
有人可以向我解释一下,也许可以提示我如何让查询更快地工作?
该数据库很大(大约 11 G)并且它最近被迁移(使用索引导入),如果有帮助的话。但是,有问题的索引是在导入之后创建的。
UPD (2):我还创建了一个具有相同架构和索引的文档测试集合。同样的查询确实正确地使用了索引。所以我倾向于认为索引大小或值类型存在某种问题。但我仍然无法确定它。
对此我非常感谢任何帮助或见解。
以下是对 4 字段索引的提示和结果供您参考的查询。
结果:
更新 (1)
好的,显然“$ne”运算符可能会破坏索引,就像@JohnnyHK 所说的那样。所以我创建了另一个这样的:
...并在删除 "$ne" 后尝试将其用于我的查询(它只是一个文档,并没有真正改变任何东西):
但这是我这次得到的:
...仍然保持 FETCH 阶段的“meta.lowercase_sku”条件,即使它就在索引中。还有什么想法吗?
ruby-on-rails - 如果在 Rails 中有复合索引,我是否需要单列索引?
我用PostgreSQL在rails中创建了一个表,它是帐户和程序之间的连接表,添加索引的最佳方法是什么?index: true
当我有两个复合索引顺序时,是否需要为每个参考文献建立单一索引?
mongodb - mongodb,复合索引,排序
一种关于 mongodb 的基本概念问题。预先感谢您的帮助。
如果我在mongodb中有一个使用非主键索引的复合索引,并且我运行一个查询,为什么理论上仍然需要对返回结果进行排序,索引本身不应该按排序顺序扫描文档吗?这是我试图理解的一个简单示例:
文档如下所示:
如果这是索引:
如果我想通过电子邮件返回按姓氏排序的文档列表,为什么仍然需要按姓氏排序的 .sort ({ ... })?:
谢谢您的帮助,
mongodb - 使用唯一复合索引更新 MongoDB 中的文档
我在 MongoDB 中有一个具有唯一复合索引的文档。
我用Spring Data
. 每当我尝试保存两个值都重复的文档时,我会得到E11000 duplicate key error
一个适当的重复键异常。
我想让MongoDB在重复的情况下替换记录而不是抛出异常。但是两种 MongoRepository 方法都喜欢save
和insert
都没有帮助。有什么办法可以做我想做的事吗?