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

时间:2015-04-16 22:58:15

标签: python mongodb mongoengine

我目前有一个类似于:

的文档
class Document(db.Document):
   item1 = db.StringField()
   item2 = db.StringField()

我想在mongoengine中定义分片键,如this。但是,我想将分片键定义为文档ID上的hashed shard key。是否可以在mongoengine内执行此操作?如果是这样,你能引导我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:0)

简短回答

搜索后面的文档和代码后,似乎mongoengine中不支持此功能。

可能的解决方法

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

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

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

  2. 运行以下命令查找新创建的索引的名称:

    db.collection.getIndexes()

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

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