我有一份文件格式为:
{
'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),其中k
是shard_key
元组中的每个项目。
有没有办法在没有直接修改MongoEngine的情况下使用嵌入式分片键?