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}

「id」という名前のフィールドの代わりに、None という名前の奇妙なフィールドがあり、値として実際の ID を持つ理由がわかりません。DB ではすべて問題ないように見えますが、ドキュメントは問題ないように見えますが、ドキュメントを取得して処理したり、ネットワーク経由で送信するために json に変換したりするとすぐに問題が発生します。誰でも助けることができますか?

4

1 に答える 1

1

ディクショナリは内部の_datamongoengine ディクショナリであり、これらの値はデータベースに格納されている値と同じではない場合があります。

なぜNone代わりに_id?100% 確実ではありませんが、時間の経過とともに失われてしまいましたが、#255_idで修正されており、次のリリースで修正される予定です。

于 2013-04-16T14:24:21.423 に答える