我注意到我的应用程序中发生了一件奇怪的事情。我只是无法弄清楚我正在做的系统错误是什么,这使得我的id字段被命名为None。 我正在使用mongoengine,我定义了一个文件,如:
class TestDoc(Document):
myField = StringField()
secondField = StringField()
然后,当我实例化TestDoc类型的Python对象时,会发生以下情况:
doc = models.TestDoc(myField="My field")
doc.save()
print doc.id
print "TESTING DOC: ", doc.__dict__
结果是:
>> 516d4e3cd836195263fdd45b
>> TESTING DOC: {'_created': False, '_data': {None: ObjectId('516d4e3cd836195263fdd45b'), 'secondField': None, 'myField': 'My field'}, '_changed_fields': [], '_initialised': True}
我不明白为什么而不是名为“id”的字段我最终得到一个名为None的奇怪字段,其值为实际id。在数据库中,一切似乎都很好,文档看起来还不错,但是一旦我检索文档并希望处理它或将其转换为json以便通过网络发送它,这就会让我产生问题。有人可以帮忙吗?
答案 0 :(得分:1)
_data
字典是一个内部的mongoengine字典,这些值可能与存储在数据库中的值不同。
为什么None
代替_id
?我不是百分百肯定,迷失在时间的迷雾中 - 但它已在#255中修复,并在下一个版本中为_id
。