Mongodb MongoEngine:向动态文档添加字段

Mongodb MongoEngine:向动态文档添加字段,mongodb,mongoengine,Mongodb,Mongoengine,我想将动态字段存储到文档中,但每个文档可以有不同的字段 例如: Class SampleDoc(DynamicDocument): xyz = StringField() df = "field1" a = SampleDoc() a.df = "testing" a.save() 如果运行上述程序,mongodb文档如下所示 { "_id" : ObjectId("53905681e5ba5b3bfd1f5242"), "_cls" : "DataPoint", "df" : "te

我想将动态字段存储到文档中,但每个文档可以有不同的字段

例如:

Class SampleDoc(DynamicDocument):
   xyz = StringField()

df = "field1"
a = SampleDoc()
a.df = "testing"
a.save()
如果运行上述程序,mongodb文档如下所示

{ "_id" : ObjectId("53905681e5ba5b3bfd1f5242"), "_cls" : "DataPoint", "df" : "testing" }
但是我想要的是字段名应该是“field1”,而不是像这样的“df”

{ "_id" : ObjectId("53905681e5ba5b3bfd1f5242"), "_cls" : "DataPoint", "field1" : "testing" }
这只是一个示例代码,所以我知道df值是什么,但实际上我不知道df值是什么。那么,在存储时动态命名字段的方法是什么呢


还有一个类似的问题,但解决方案建议使用DictField(),但我不想使用它。

在mongoDB shell中,这对我很有用:

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

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

在查看源代码中的BaseDocument.py后找到了解决方案

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