0

我注意到我的应用程序中发生了一件奇怪的事情。我只是无法弄清楚我正在做的系统错误是什么,这使得我的 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}

我不明白为什么我最终得到了一个名为 None 的奇怪字段,而不是一个名为“id”的字段,它的值是实际的 id。在数据库中,一切似乎都很好,文档看起来还不错,但是一旦我检索到一个文档并希望对其进行处理或将其转换为 json 以便通过网络发送它,这给我带来了麻烦。任何人都可以帮忙吗?

4

1 回答 1

1

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

为什么None而不是_id?我不是 100% 确定,迷失在时间的迷雾中 - 但它已在#255中修复,并将_id在下一个版本中发布。

于 2013-04-16T14:24:21.423 回答