1

我已经彻底了解了 stackoverflow 链接如何在 mongodb 中查找空文档?,但它返回所有文档而不仅仅是 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 论坛https://forums.aws.amazon.com/thread.jspa?messageID=908846之后,我试图确保丢失的文档是由于 Null 值。但无法对 Null 值文档进行计数。

4

2 回答 2

2

有几件事-

  • Amazon DocumentDB 不允许在字符串值中使用空字符 (Unicode \u0000)。这可能是您在 DocumentDB 集群中看到少 2000 条记录的原因。然而,DocumentDB 团队正在努力添加对空字符的支持。

同时,正如 AWS 论坛中所建议的,有两种方法可以缓解这种情况:

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

于 2020-04-16T23:41:46.740 回答
0

我看到新 DocumentDB 中少了 2000 个文档。

要找到丢失的文档:

  1. 检索 DocumentDB 中所有文档的 _id。
  2. 检索 MongoDB 中所有文档的 _id。
  3. 从集合 2 中减去集合 1。
  4. 从集合 3 中使用 _id 的 MongoDB 获取文档。
于 2020-04-15T16:32:31.660 回答