首页 > 解决方案 > MongoDB Bulkwrite 哪些查询在匹配步骤失败?

问题描述

我在 MongoDB 中进行批量写入操作以一次更新多个文档。

现在有什么方法可以知道我的查询的哪个序列号匹配步骤失败。

因为在返回的文档中我得到了nModifiednMatched它告诉有多少匹配失败,但不是哪个查询序列号失败了?

标签: mongodbbulk-operations

解决方案


您可以使用BulkWriteResult.writeErrors。它可用于有序和无序操作模式。具体来说,“op”字段会告诉您失败的文档。

这是 pymongo参考的示例输出:

{'nInserted': 0,
'nMatched': 1,
'nModified': 1,
'nRemoved': 0,
'nUpserted': 0,
'upserted': [],
'writeConcernErrors': [],
'writeErrors': [{u'code': 11000,
              u'errmsg': u'...E11000...duplicate key error...',
              u'index': 1,
              u'op': {'_id': 4}}]}

推荐阅读