2014-06-05 68 views
1

我想將動態字段存儲到文檔中,但每個文檔都可以有不同的字段。MongoEngine:向動態文檔添加字段

爲如:

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有什麼價值。那麼在存儲時動態命名字段的方式是什麼?

還有一個類似的問題using key as value in Mongoengine,但解決方案建議使用DictField(),但我不想使用它。

回答

0

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

我試過了,但是我在mongoengine中遇到了關鍵錯誤.. –

1

發現在源代碼中尋找BaseDocument.py後的溶液。

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