我想将动态字段存储到文档中,但每个文档可以包含不同的字段。
例如:
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(),但我不想使用它。
答案 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" }