擅长:python、mysql、java
<p>两件事:</p>
<p><code>ObjectId</code>接收24个十六进制字符串,不能用该字符串初始化它。例如,不使用<code>'test1'</code>,您可以使用一个字符串,例如<code>'53f6b9bac96be76a920e0799'</code>或{<cd4>}。您甚至不需要初始化<code>ObjectId</code>,可以这样做:</p>
<pre><code>...
test._id = '53f6b9bac96be76a920e0799'
test.save()
...
</code></pre>
<p>我不知道你想用<code>_id</code>来完成什么。如果您试图为您的文档生成和id字段或“主键”,则不必这样做,因为它是自动生成的。你的代码应该是:</p>
^{pr2}$
<p>如果您坚持使用名为<code>_id</code>的字段,您必须知道您的<code>id</code>将是相同的,因为在内部,MongoDB调用它<code>_id</code>。如果仍要使用<code>string1</code>作为标识符,则应执行以下操作:</p>
<pre><code>class Test(Document):
_id = StringField(primary_key=True)
tag = StringField(required=True)
</code></pre>