【问题标题】:MongoEngine add hashed shared key in MetaMongoEngine 在 Meta 中添加散列共享密钥
【发布时间】:2021-04-08 19:10:52
【问题描述】:

我有一个分片的 MongoDB 集合。下面是一个测试 MongoDB 模型:

class Test(Document):
   some_id = ObjectIdField(required=True)
   meta = {
        "auto_create_index": False,
        "index_background": True,
        "indexes": [{"fields": ["+some_id"]}],
        "shard_key": ("some_id_hashed",),
    }

我正在关注 shard_key 的 mongoEngine 文档。但是,当我运行 save 时,它会因以下错误而失败:

File "/venv/lib/python3.7/site-packages/mongoengine/document.py", line 485, in _save_update
val = val[ak]
KeyError: 'some_id_hashed'

我为一些 id db.collection.createIndex( { some_id: "hashed" } ) 创建了一个哈希索引

有人知道我应该如何使用 hashed_shard_key 进行保存吗?

【问题讨论】:

    标签: mongodb mongoengine


    【解决方案1】:

    分片键必须是模型的现有字段,所以在这种情况下应该是some_id

    【讨论】:

    • 在我的例子中,我将使用散列键作为分片键。您是否建议我将 some_id_hashed 添加到模型中?
    • 这可能有效,但我同意这听起来像是一个肮脏的解决方法。我在分片方面的经验有限,但也许你是对的,MongoEngine 中有一个错误,或者根本不支持它。在 githib repo 中打开一张票并使用 pymongo(底层驱动程序)发布一个工作示例,这可能有助于解决它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多