如果您尝试此代码..您可以看到我遇到的问题..
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
}
}
}
>
如您所见,我打算将'x.DICTIONARY_KEY.i'增加1 但结果是创建了一个新键(boxfluxInt),即使我将'boxfluxInt'的db_field设置为'i'
是虫子吗?或者我错了吗?
我认为字典键('DICTIONARY_KEY')无法转换为mongo样式的db字段..如果我是正确的..
答案 0 :(得分:1)
好的,这看起来像一个bug,报告它们的最佳位置是在github:http://github.com/mongoengine/mongoengine
直到0.7才会修复,因为它会破坏生产中的现有用户。因此,我必须将迁移说明作为修复的一部分。