MongoEngine 0.8.3嵌入式碎片密钥

时间:2014-01-14 01:16:44

标签: python mongodb mongoengine

我有一份文件格式为:

{ 
 'code': {
          'one': 'asdf',
          'two': 'hjkl'
         }
}

code.one是此文档的分片键。我有一个MongoEngine类:

class Code(Document):
    meta = {
            'collection': 'codes',
           }

    code = EmbeddedDocumentField(EmbeddedCodes, default=EmbeddedCodes())

class EmbeddedCodes(EmbeddedDocument):

    one = StingField(required=True)
    two = StringField()

当我尝试将shard_key添加到Code()元数据时,它不起作用。如果我尝试:

'shard_key': ('code.one',)

保存/更新时出现此错误:

AttributeError: 'Code' object has no attribute 'code.one'

如果我使用code_one,我会遇到同样的问题。我看了一下这背后的MongoEngine代码(document.py:325 _object_key()),它看起来像getattr(self,k),其中kshard_key元组中的每个项目。

有没有办法在没有直接修改MongoEngine的情况下使用嵌入式分片键?

0 个答案:

没有答案