代码之家  ›  专栏  ›  技术社区  ›  Nicolò Gasparini

MongoDB中唯一的多键哈希索引

  •  0
  • Nicolò Gasparini  · 技术社区  · 6 年前

    每一个

    问题是,如果我尝试这样做,就会得到一个错误,因为生成的密钥太大。

    pymongo.errors.OperationFailure:WiredTigerIndex::insert:键太大,无法索引,失败

    hashed indexes ,这将解决此问题,但它们不用于多键索引。

    我该怎么解决?



    不过,这意味着每次我想添加新属性时都要重新计算散列,再加上创建散列和索引所需的过多时间。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Akrion    6 年前

    这是mongoDB自2.6以来添加的一项功能,用于防止索引项的总大小超过1024字节(也称为 Index Key Length Limit ).

    在MongoDB 2.6中,如果试图插入或更新文档,使索引字段的值大于索引键长度限制,则操作将失败并向客户端返回错误。在MongoDB的早期版本中,这些操作将成功插入或修改文档,但索引不包括对文档的引用。

    对于迁移和其他临时场景,您可以将此用例的处理降级到2.4,在这种情况下,通过设置此mongoDB服务器标志不会触发此异常:

    db.getSiblingDB('admin').runCommand( { setParameter: 1, failIndexKeyTooLong: false } )
    

    但不建议这样做。

    还可以考虑为 文档的每个属性

    您检查过如何查询文档以及在哪些字段上键入吗?你用过吗 explain

    Here are the recommended MongoDB indexing strategies .

    Excessive indexing has a price as well and should be avoided .