You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PouchDB allDocs()返回行数与total_rows不符问题咨询

PouchDB bulkDocs后allDocs行数与total_rows不符的原因分析
  • 文档冲突版本导致计数差异:
    db.info()的doc_count和allDocs()的total_rows统计的是唯一文档ID的数量,而allDocs()默认会返回同一文档ID下的所有冲突版本。当bulkDocs批量写入时,如果出现版本冲突(比如并发写入同一ID、未正确处理_rev版本号),PouchDB会保留所有冲突的文档版本,这就会让返回的rows数组长度大于total_rows。

  • bulkDocs的new_edits参数设置问题:
    如果调用bulkDocs时传入了new_edits: false,PouchDB会跳过版本号检查,允许创建同一文档ID的多个独立版本。这种情况下,同一ID会对应多条文档记录,直接导致rows数远大于唯一ID的计数(total_rows)。

  • 压缩操作不处理冲突文档:
    你执行的压缩(compact)操作只会清理标记为_deleted: true的文档,不会自动移除冲突的文档版本。即使手动执行压缩,冲突版本依然会被保留,所以allDocs()还是会返回这些额外的版本数据。

验证方法:随机选取几个文档ID,用db.get(docId, {conflicts: true})查询,若返回结果包含_conflicts字段,即可确认是冲突版本导致的行数差异。

内容的提问来源于stack exchange,提问作者Netnoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:51:58