Я использовал только mongodb. По моему личному мнению, я бы рекомендовал начать с чего-то низкого уровня, а затем двигаться дальше. В противном случае вы можете обнаружить, что используете дополнительные расширенные функции, предоставляемые драйверами более высокого уровня, такими как mongoose, без реальной пользы.
Проблема, с которой я столкнулся с mongodb, который присущ node.js, - это плохая документация. Документация есть, и ее много, но она не всегда самая полезная. Я пока не видел хороших и исчерпывающих примеров использования драйвера в производственной среде. Документация заполнена тем же шаблонным примером открытия соединения, выполнения команды и закрытия соединения. Вы можете сказать, что это скопировано и вставлено из шаблона, потому что каждый пример включает в себя все необходимое, а не только то, что необходимо для каждого примера.
Чтобы привести пример, взятый полностью наугад:
- raw {Boolean, default: false}, выполнять операции с использованием буферов raw bson.
Что именно делает «выполнение операций с использованием необработанных буферов bson»? Я нигде не могу найти объяснения, и поиск в Google по этой фразе не помогает. Возможно, я мог бы погуглить и дальше, но в этом нет необходимости. Информация должна быть там. Есть ли какие-либо преимущества в производительности, стабильности, целостности, совместимости, переносимости или функциональных преимуществах для включения / отключения этой опции? Я действительно понятия не имею, без глубокого погружения в код, и если вы находитесь в моей лодке, это серьезная проблема. У меня есть демон, где безупречная постоянство не требуется, но программа должна быть очень стабильной во время выполнения. Я мог бы предположить, что это означает, что он ожидает от меня десериализации и сериализации в JSON или что-то низкоуровневое, внутреннее и прозрачное для пользователя, но я могу ошибаться. Хотя я склонен делать хорошие предположения, я не могу полагаться на предположения и догадки при создании жизненно важных систем. Итак, здесь я могу либо проверить свое утверждение с помощью кода, либо глубже изучить Google или их код. По отдельности это не так уж плохо, но я много раз оказываюсь в этой ситуации, читая их документацию. Разница может означать дни, потраченные на задачу, по сравнению с часами. Мне нужно подтверждение, а документация почти не дает мне объяснений, не говоря уже о подтверждении.
Документация спешит. Он не объясняет события, дает расплывчатые подробности о том, когда возникают ошибки или о природе этих ошибок, и часто существует несколько способов обеспечения подключения, которые могут быть неясными. Вы можете обойтись, и это не совсем бесполезно, но это очень грубо по краям. Вы обнаружите, что некоторые вещи оставлены на усмотрение и эксперименты.