-->

MongoEngine:添加字段,以动态文档(MongoEngine: Adding Fields

2019-10-20 06:07发布

我想动态字段存储的文件,但每个文件可以有不同的领域。

对于例如:

Class SampleDoc(DynamicDocument):
   xyz = StringField()

df = "field1"
a = SampleDoc()
a.df = "testing"
a.save()

如果我运行上面的程序,MongoDB的文档看起来像下面这样。

{ "_id" : ObjectId("53905681e5ba5b3bfd1f5242"), "_cls" : "DataPoint", "df" : "testing" }

但我想那是什么字段名应该是“字段1”,而不是“DF”这样的..

{ "_id" : ObjectId("53905681e5ba5b3bfd1f5242"), "_cls" : "DataPoint", "field1" : "testing" }

这仅仅是一个示例代码,所以我知道DF值是什么,但在真正的我不知道还有什么价值DF成立。 那么,什么是同时存储动态命名字段的方式。

还有一个类似的问题使用密钥,以Mongoengine值 ,但解决方案建议使用DictField(),但我不希望使用它。

Answer 1:

发现在源代码中看着BaseDocument.py后的溶液。

df = "field1"
a = SampleDoc()
a.__setattr__(df,"testing")
a.save()


Answer 2:

在MongoDB的壳这个工作对我来说:

df = "field1"
a = {}
a[df.toString()] = "testing" //use [] and toString here
db.test.save(a)

db.test.find(a)
{ "_id" : ObjectId("539062f5944a6efde79f7c1d"), "field1" : "testing" }


文章来源: MongoEngine: Adding Fields to Dynamic Document