Mongoengine - id字段名为None

时间:2013-04-16 13:25:15

标签: mongodb mongoengine

我注意到我的应用程序中发生了一件奇怪的事情。我只是无法弄清楚我正在做的系统错误是什么,这使得我的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以便通过网络发送它,这就会让我产生问题。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

_data字典是一个内部的mongoengine字典,这些值可能与存储在数据库中的值不同。

为什么None代替_id?我不是百分百肯定,迷失在时间的迷雾中 - 但它已在#255中修复,并在下一个版本中为_id