Как найти количество документов, содержащих нулевые значения в MongoDB? - PullRequest
1 голос
/ 15 апреля 2020

Я прошелся по ссылке stackoverflow Как найти пустые документы в mongodb? , но он возвращает все документы, а не только Null. Кроме того, мне просто нужен счетчик и никакие действия с пустыми документами.

Итак, фон, я импортировал коллекцию из MongoDB 4.0.17 в AWS DocumentDB (~ Пн * 1015) * 3.6). Я вижу, что на 2000 документов меньше в новой DocumentDB. Также ниже сообщение об ошибке, которое я получил во время восстановления / импорта.

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 Я попытался убедиться, что отсутствующие документы имеют нулевые значения. Но не в состоянии принять нулевой счет документов.

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Пара вещей -

  • Amazon DocumentDB не допускает нулевой символ (Unicode \ u0000) в строковом значении. Вероятно, именно поэтому вы видите на 2000 записей меньше в вашем кластере DocumentDB. Однако команда DocumentDB работает над добавлением поддержки нулевых символов.

Между тем, как предлагается на форуме AWS, есть два способа смягчить это:

  • Найдите в исходных коллекциях MongoDB строки с нулевым символом и замените нулевой символ пробелом / другим символом / ничем в соответствии с вашим вариантом использования.
  • Для миграции с CD C используйте соответствующие Параметр задачи обработки ошибок DMS (https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.ErrorHandling.html), чтобы зарегистрировать ошибку и продолжить, затем просмотреть ошибки и отредактировать / перенести эти документы отдельно.

Как определить, какие документы имеют нулевые значения, использование подхода Оледа имеет для меня смысл.

0 голосов
/ 15 апреля 2020

Я вижу, что в новой DocumentDB на 2000 документов меньше.

Чтобы найти отсутствующие документы:

  1. Получить _ids всех документов, находящихся в DocumentDB.
  2. Получить _ids всех документов, находящихся в MongoDB.
  3. Вычесть набор 1 из набора 2.
  4. Получить документы из MongoDB с _id в наборе 3.
...