2012-05-24 34 views
0

如果你試試這個代碼..你可以看到我有問題..Mongoengine,辭典鍵後場.. Mongoengine不能轉換字段名db_fields

class Embedded(EmbeddedDocument): 
    boxfluxInt = IntField(default=0, db_field='i') 
    meta = {'allow_inheritance': False} 
class Test(Document): 
    boxflux = MapField(field=EmbeddedDocumentField(Embedded), db_field='x') 
    meta = {'collection': 'test', 
        'allow_inheritance': False} 
Test.drop_collection() 

newTestDoc = Test() 
newTestDoc.boxflux['DICTIONARY_KEY'] = Embedded(boxfluxInt=1) 
newTestDoc.save() 
Test.objects.update_one(inc__boxflux__DICTIONARY_KEY__boxfluxInt=1) 

MongoDB中的結果是一樣..

> db.test.findOne() 
{ 
    "_id" : ObjectId("4fbdbbc8c450190a50000001"), 
    "x" : { 
      "DICTIONARY_KEY" : { 
        "boxfluxInt" : 1, 
        "i" : 1 
      } 
    } 
} 
> 

正如你所看到的,我打算用1 增加「x.DICTIONARY_KEY.i」,但結果是,即使我設置「boxfluxInt」的db_field爲「一個新的密鑰(boxfluxInt)創建我'

這是錯誤嗎?或者我錯了?

我覺得字典鍵(「DICTIONARY_KEY」),使轉換爲蒙戈風格分貝領域是不可能的..如果我是正確的..

回答

1

OK,這看起來像一個bug,最好的地方,舉報他們在github上:http://github.com/mongoengine/mongoengine

這不會得到修復,直到0.7,因爲它會打破生產中的現有用戶。所以我將不得不寫出遷移注意事項作爲修復的一部分。