【问题标题】:Dynamic naming key Mongoengine动态命名密钥 Mongoengine
【发布时间】:2021-02-09 11:44:29
【问题描述】:
如何创建动态 mongoengine 密钥?这样我就可以通过名称进行查询。
这是我的目标示例:
{
"joe": {
"score": 20
},
"bob": {
"score": 30
}
...
}
所以模型应该是这样的:
class user{name}(EmbeddedDocument):
score = IntField()
class users(Document):
user(EmbeddedDocumentField)
score = IntField()
用mongoengine可以实现吗?
【问题讨论】:
标签:
python
mongodb
nosql
mongoengine
【解决方案1】:
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}}}]