如何在MongoDB中查找包含空值的文档计数?

如何在MongoDB中查找包含空值的文档计数?,mongodb,aws-documentdb,Mongodb,Aws Documentdb,我已经浏览了stackoverflow链接,但它返回所有文档,而不仅仅是Null。另外,我只需要计数,不需要对包含Null的文档执行任何操作 因此,背景是,我已经将集合从MongoDB 4.0.17导入AWS DocumentDB(~Mongo 3.6)。我看到在新的DocumentDB中减少了2000个文档。下面是我在还原/导入过程中收到的错误消息 2020-04-15T12:31:07.412+0000 [####################....] prod.original

我已经浏览了stackoverflow链接,但它返回所有文档,而不仅仅是Null。另外,我只需要计数,不需要对包含Null的文档执行任何操作

因此,背景是,我已经将集合从MongoDB 4.0.17导入AWS DocumentDB(~Mongo 3.6)。我看到在新的DocumentDB中减少了2000个文档。下面是我在还原/导入过程中收到的错误消息

2020-04-15T12:31:07.412+0000    [####################....]  prod.original_post  1.65GB/1.96GB  (84.3%)
2020-04-15T12:31:08.347+0000    error: Unsupported BSON : has null character in string
2020-04-15T12:31:10.412+0000    [####################....]  prod.original_post  1.68GB/1.96GB  (85.8%)
2020-04-15T12:31:22.417+0000    [######################..]  prod.original_post  1.81GB/1.96GB  (92.1%)
2020-04-15T12:31:31.602+0000    [########################]  prod.original_post  1.96GB/1.96GB  (100.0%)
2020-04-15T12:31:31.602+0000    restoring indexes for collection prod.original_post from metadata
2020-04-15T12:32:11.687+0000    finished restoring prod.original_post (3700504 documents)
2020-04-15T12:32:11.687+0000    done
而且,在AWS论坛之后,我试图确保丢失的文档是由于空值造成的。但无法接受空值文档的计数

我看到在新的DocumentDB中减少了2000个文档

要查找丢失的文档,请执行以下操作:

  • 检索DocumentDB中所有文档的_ID
  • 检索MongoDB中所有文档的_ID
  • 从集合2中减去集合1
  • 从MongoDB获取集合3中具有_id的文档 有几件事-

    • Amazon DocumentDB不允许在字符串值中使用空字符(Unicode\u0000)。这可能是DocumentDB集群中看到的2000条记录更少的原因。然而,DocumentDB团队正在努力添加对空字符的支持
    同时,正如AWS论坛所建议的,有两种方法可以缓解这种情况:

    • 在源MongoDB集合中搜索带有空字符的字符串,并根据您的用例将空字符替换为空格/其他字符/无
    • 对于CDC迁移,请使用适当的DMS错误处理任务设置()记录错误并继续,然后查看错误并分别编辑/迁移这些文档

    关于如何识别哪些文档具有空值,使用Oled的方法对我来说很有意义。

    不支持的BSON:has null character in string
    ->这是用于字符串字段的吗?@whoami Yeah看起来是这样的。但文档中有许多字符串字段,逻辑似乎很好。但有没有资源密集程度较低的?查找所有对象id的命令失败,错误为“断言失败:[不可处理的oom]在保存期间分配对象失败”。我不熟悉该错误,但通常数据库和驱动程序都能够将任意结果集流式传输到应用程序,由于您只检索ID,因此应用程序中也不需要那么多内存。Amazon DocumentDB现在支持空字符。