【问题标题】:Heterogeneous Lists in Python MongoEnginePython MongoEngine 中的异构列表
【发布时间】:2016-04-27 12:25:12
【问题描述】:

MongoEngine 是否支持在列表中包含不同的数据类型?例如,我想要一个ListField() 来存储IntField()StringField()。有没有办法在 MongoEngine 中做到这一点?

【问题讨论】:

    标签: python mongodb mongoengine nosql


    【解决方案1】:

    除非您要求,否则ListField 不会强制执行数据类型。但是,如果您这样做,那么它目前必须是单一数据类型。例如

    这行得通:

    import mongoengine as mdb
    class Stuff(mdb.Document):
        things = mdb.ListField()
    
    s = Stuff(things=['1',2,[4,5]])
    s.save()
    

    这会抛出TypeError,因为它正在强制执行数据类型:

    import mongoengine as mdb
    class Stuff(mdb.Document):
        things = mdb.ListField(mdb.IntField())
    
    s = Stuff(things=['1',2,[4,5]])
    s.save()
    

    这会抛出 AttributeError,因为它需要一个 Field 作为第一个参数:

    import mongoengine as mdb
    class Stuff(mdb.Document):
        things = mdb.ListField([mdb.IntField(),mdb.StringField(),mdb.ListField()])
    
    s = Stuff(things=['1',2,[4,5]])
    s.save()
    

    我可以看到最后一个示例很有用,因此您可能希望在项目存储库中提交 an issue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多