问题描述
如何创建动态 mongoengine 密钥?这样我就可以通过名称进行查询。 这是我的目标示例:
{
"joe": {
"score": 20
},"bob": {
"score": 30
}
...
}
所以模型应该是这样的:
class user{name}(EmbeddedDocument):
score = IntField()
class users(Document):
user(EmbeddedDocumentField)
score = IntField()
用mongoengine可以实现吗?
解决方法
DictField 可能会帮助您到达那里,见下文
from mongoengine import *
connect()
class UserScore(EmbeddedDocument):
score = IntField()
class Simple(Document):
mapping = DictField(field=EmbeddedDocumentField(UserScore))
e = Simple()
e.mapping["John"] = UserScore(score=5)
e.mapping["Bob"] = UserScore(score=10)
e.save()
# print the raw objects as stored in mongo
print(list(Simple.objects.as_pymongo()) # [{'_id': ObjectId('603cc7bca206e448e82c7437'),'mapping': {'John': {'score': 5},'Bob': {'score': 10}}}]