首页 > 解决方案 > 我们如何覆盖 mongoDB 中的默认索引限制?

问题描述

我有一个超过 125 个字符的 AWS Cognito JWT,我需要在 MongoDB 中创建索引。但问题是 MongoDB 索引接受最大限制的字符,125。我们如何设置最大限制或者有什么方法可以增加默认字符限制。

我尝试索引出现以下错误的 JWT(大约 150 个字符)。

  MongoError: WiredTigerIndex::insert: key too large to index, failing  1025 { : "abc@xyz.com", "asdfghjkertyjk......"}

这就是我创建模式索引的方式。

schemaName.index({ email: 1, token: 1 });

标签: mongodbmongooseindexing

解决方案


我会采用不同的方法,因为索引大文本/字符串字段并不总是最好的选择。

使用 SHA1 或 MD5 生成 JWT 字符串的唯一校验和(这将为您提供恒定的字符串长度)并保存该字段。按该字段索引和搜索

另一种选择是将 JWT 令牌解码为 JSON 并将其存储为嵌入式文档 - 然后您可以索引文档(但恕我直言,这是一个有风险的选择)


推荐阅读