MongoEngine:向动态文档添加字段

时间:2014-06-05 11:54:33

标签: mongodb mongoengine

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

例如:

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的值是多少。那么在存储时动态命名字段的方法是什么。

有一个类似的问题using key as value in Mongoengine,但解决方案建议使用DictField(),但我不想使用它。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

在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" }