2012-06-29 2 views
0

Возможно ли хранить JSV внутри MongoDB со схемами для каждой коллекции, а затем запустить MapReduce для проверки документов? Вставьте недопустимые документы в коллекцию, которую я могу вручную исправить?Проверка схемы JSV в MongoDB?

Я хочу как можно меньше вмешательства внешнего приложения, в идеале, cron, который MapReduces над грязными документами каждый день, тогда я буду исследовать, почему эти документы недействительны вручную.

+0

Вы в конечном итоге разработали решение для этого? – Stennie

ответ

1

Map/Reduce Вероятно, это неправильный подход для проверки соответствия схемы, поскольку он не изменяет документы в исходной коллекции. Таким образом, вы не можете установить флаг в документе, указывающий, что он был проверен и может закончиться повторной проверкой при каждом запуске cron.

Предлагаемый подход:

  • Добавить индексированный validated поле для документов; возможно, это будет числовое значение, если вы хотите изменить свои схемы.
  • Если возможно все документы должны быть проверены на вставке
  • Написать скрипт, который будет найти все документы, которые не были валидацией, чтобы соответствовать текущей схеме и обновить validated поля на основе результатов JSV
  • Сохранить конкретную проверку ошибок в другой коллекции или, возможно, вложенного документа (вы можете рассмотреть некоторые manual padding, если добавление отчетов об ошибках заканчивается запуском чрезмерных перемещений документа).