如何使用 mongoengine 指定散列分片键?

How to specify a hashed shard key using mongoengine?

我目前有一份文件看起来像:

class Document(db.Document):
   item1 = db.StringField()
   item2 = db.StringField()

我想在 mongoengine 中定义分片键,例如 this. However, I would like define the shard key as a hashed shard key 在文档 ID 上。是否可以在 mongoengine 中执行此操作?如果是这样,你能引导我朝着正确的方向前进吗?

简答

搜索文档和代码后,mongo引擎似乎不支持此功能。

可能的解决方法

MongoDB 在创建散列分片键时在幕后使用散列索引。

  1. 使用 mongo shell 命令在字段上手动创建散列索引。

    db.collection.createIndex( { fieldName: "hashed" } )

  2. 通过运行找到新建索引的名称:

    db.collection.getIndexes()

  3. 在mongo引擎中使用索引名称作为分片键字段:

    class Document(db.Document):
        item1 = db.stringField()
        item2 = db.StringField()
    
        meta = {
            'shard_key': ('_indexName_')
        }