【问题标题】: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}}}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 2012-11-03
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多