擅长:python、mysql、java
<p>pymongo<code>BulkWriteResult</code>中的<code>upserted_ids</code>字段仅包含作为upsert操作的一部分插入的记录的ID,例如设置了<code>upsert=True</code>参数的<code>UpdateOne</code>或<code>ReplaceOne</code></p>
<p>当您正在执行没有<code>upsert</code>选项的<code>InsertOne</code>时,<code>upserted_ids</code>列表将为空</p>
<p>pymongo的BulkWriter中缺少<code>inserted_ids</code>字段,导致驱动程序中出现遗漏;从技术上讲,它符合D.SM回答中提到的crud规范,因为它被注释为“驾驶员可能选择不提供此属性”</p>
<p>但是。。。有一个答案。如果您仅在批量更新中执行插入操作(而不是混合批量操作),只需使用<code>insert_many()</code>。它与大容量写入一样高效,而且至关重要的是,它确实在<code>InsertManyResult</code>对象中提供了<code>inserted_ids</code>值</p>
<pre><code>from pymongo import MongoClient
db = MongoClient()['mydatabase']
inserts = [{'foo': 'bar'}]
result = db.test.insert_many(inserts, ordered=False)
print(result.inserted_ids)
</code></pre>
<p>印刷品:</p>
<pre><code>[ObjectId('5fb92cafbe8be8a43bd1bde0')]
</code></pre>