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()