Создание отношений между схемами в MongoDB.

Этот пост будет кратким руководством по созданию отношений между моделями / схемами в базе данных на основе документов. Однако прежде чем я перейду к этому, я хочу кратко обсудить различия между реляционными базами данных и базами данных на основе документов.

Эти два типа баз данных обычно называют SQL и NoSQL. SQL или реляционные базы данных структурированы с таблицами, созданными по строкам и столбцам. Базы данных NoSQL, такие как MongoDB, состоят из пар ключей и значений и имеют меньшую структуру, чем базы данных SQL, но более легко масштабируемы.

Одна из замечательных особенностей баз данных SQL заключается в том, что вы можете легко создавать ассоциации между таблицами, используя внешние ключи. Это позволяет создавать ассоциации, такие как один к одному, один ко многим или многие ко многим. Любым примером может быть создание таблицы пользователей и таблицы действий, выполненных пользователями, таких как бег, ходьба или чтение книг. Вы бы хотели, чтобы пользователи могли отслеживать эти действия, поэтому действие должно быть связано с пользователем, который выполнил действие.

Поскольку база данных на основе документов, такая как MongoDB, использует пары ключ-значение для хранения данных, создать эти отношения не так просто. Однако вот как я сделал это в недавнем проекте. Я создал «счетчик статистики», подобный показанному выше, но создал его в MongoDB. В этих примерах я также использую Atom. Надеюсь, эти шаги достаточно просты для выполнения, чтобы вы могли воспроизвести их в своих собственных проектах.

Шаг 1) Создайте свои схемы.

Как видите, у меня есть 4 разные схемы. Пользователи, дата, активность и категория. В моем счетчике статистики я хотел, чтобы пользователи могли создавать категорию, например «тренировки», чтобы они могли отслеживать группу действий в этой категории, таких как бег, ходьба или поднятие тяжестей.

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

Однако в схеме действий у меня есть тип активности и метрика для измерения активности. Кроме того, у меня есть еще один ключ категории. Внутри категории вы можете видеть, что я сослался на схему «Категория». Внутри наших схем это все, что нам действительно нужно для того, чтобы эта ассоциация произошла. Остальное разместим в нашем файле App.js.

Шаг 2) Получите запрос в App.js

Как вы можете видеть здесь, у меня есть запрос GET, в котором я получаю категорию, а затем нахожу тип действия на основе ввода пользователя. Поскольку в моем поле «Категория» есть только одно поле (строка), это все, что мне нужно сделать для моего примера.

Однако, если у вас было несколько полей для вашей схемы, вам может потребоваться выполнить .find (), а затем .populate (). Вы можете найти документацию по этому вопросу в документации Mongo, однако, для простоты, я не буду здесь вдаваться в подробности. Создать ассоциацию оказалось намного проще, чем я думал. Самым сложным было получить правильный синтаксис и действительно попытаться понять, что делает Mongo, и что я хотел, чтобы он делал вместо этого.

Если у вас есть какие-либо вопросы или отзывы об этом кратком сообщении, не стесняйтесь обращаться ко мне. Спасибо!