动态命名键 Mongoengine

问题描述

如何创建动态 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}}}]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...