Ответ 1
Если ваши изображения малы, вы можете сохранить их в виде двоичных данных в документах в своей коллекции. Просто подумайте, что вы будете получать их каждый раз, когда вы запрашиваете свой документ (если вы не исключаете поле "изображение" из ваших запросов).
Однако, если ваши изображения больше, я бы использовал GridFS. В GridFS есть некоторые функции, которые очень хорошо справляются с обращением с изображениями, которые вы должны учитывать:
- Для больших изображений, когда они хранятся в GridFs, они будут разделены кусками, и вы можете хранить очень большие файлы. Если вы пытаетесь сохранить изображения в своем документе, вы ограничены максимальным размером документа размером 16 МБ, и вы потребляете пространство, которое необходимо использовать для вашего фактического документа.
- Вы можете добавлять метаданные к самому изображению и запускать запросы против этих атрибутов, как если бы вы делали это из обычного документа в коллекции. Итак, GridFS так же хорош, как документ для метаданных об изображении.
- Мне очень нравится, что я получаю хэш MD5, рассчитанный на изображения. (Это очень полезно для некоторых из моих случаев).
- Сохраняя изображения в GridFS, вы сохраняете предварительную обработку изображения в двоичном формате (неважно, но удобнее GridFS).
С точки зрения производительности, чтение/запись на обычный документ не должно отличаться от того, как делать это с GridFS. Я бы не рассматривал производительность как отличительный элемент при выборе одного из них.
Моя личная рекомендация - пойти с GridFS, но вам нужно проанализировать для вашего конкретного случая использования.
Надеюсь, что это поможет.