Web プロジェクト用に MongoEngine でMongoDBデータベースをモデリングしています。後で効率的にクエリできるように、少し変わった方法でデータを保存したいと考えています。
MongoDB のデータは次のようになります。
// "outer"
{
"outer_data": "directors",
"embed": {
"some_md5_key": { "name": "P.T. Anderson" },
"another_md5_key": { "name": "T. Malick" },
...
}
}
私の最初の直感は、MongoEngine で次のようにモデル化することでした。
class Inner(EmbeddedDocument):
name = StringField()
class Outer(Document):
outer_data = StringField()
embed = DictField(EmbeddedDocument(Inner)) # this isn't allowed but you get the point
つまり、私が本質的に望んでいるのは、EmbeddedDocument を ListField に格納することと同じですが、各 EmbeddedDocument の動的キーを持つ DictField に格納することです。
参照用の ListField で許可される例:
class Inner(EmbeddedDocument):
inner_id = StringField(unique=True) # this replaces the dict keys
name = StringField()
class Outer(Document):
outer_data = StringField()
embed = ListField(EmbeddedDocument(Inner))
DictField + EmbeddedDocument (dict "value" として) を使用しながら、ネストされた "Inner" ドキュメントに対しても MongoEngine オブジェクトを返すことをお勧めします。これを MongoEngine でモデル化するにはどうすればよいですか? それは可能ですか、それとも一般的な DictField の下にすべてのデータを単純に配置する必要がありますか?