Вот статья, которую я хотел бы иметь, когда впервые пытался разобраться с MongoDB. Мне потребовалась горячая минута, чтобы понять его нетрадиционную структуру и уникальную терминологию, и я надеюсь, что после прочтения этой статьи у вас будет лучшее представление о том, как и почему он делает то, что делает!
MongoDB — это база данных NoSQL, что означает, что она не соответствует традиционной структуре реляционной базы данных, состоящей из таблиц, столбцов и строк.
Вместо этого MongoDB хранит свои данные в коллекциях, полных документов.
Давайте разберем это.
Коллекция — это эквивалент таблицы в MongoDB. Точно так же, как мы можем иметь несколько таблиц в базе данных, мы можем иметь несколько коллекций.
Данные внутри этих коллекций хранятся в документах.
Документ — это объект, который хранит свои данные с парами ключ/значение и является эквивалентом строки в таблице.
Допустим, у нас есть коллекция «Пользователи», заполненная документами.
Каждый документ в коллекции содержит данные одного пользователя и может иметь следующую структуру:
{ firstName: “Jeffery”, lastName: “Doberman”, contactNumber:{ "home": 123456, "mobile": 123456 }, Hobbies : [“dancing”, “longboarding too fast”,“making pasta”] }
Как видите, интересная вещь в MongoDB заключается в том, что она позволяет нам вкладывать объекты и массивы в документы, чтобы мы могли хранить данные так, как мы хотим их получить, без необходимости писать сложные предложения соединения, выбора и где.
Следует также отметить, что каждый документ не обязательноиметь одинаковую структуру или содержать нулевые свойства для полей, которые существуют в одних документах и отсутствуют в других.
Например, новый пользователь Алиса может не иметь хобби или телефонов любого рода, а вместо этого может быть фанатиком кино. В этом случае ее документ мог бы выглядеть так.
{ firstName: “Alice”, lastName: “Kaufferman”, favouriteColor: “red”, favouriteMovies: [“Alice in wonderland”, “Shrek 2”] }
Теперь, когда мы лучше понимаем, как работают документы и коллекции, давайте узнаем, как выполнять некоторые основные операции CRUD.
Общий синтаксис для них выглядит следующим образом:
database.collection.QueryMethod({“key”: “value”})
Эти команды выполняются в оболочке MongoDB и используют объекты JSON для управления данными. Давайте воспользуемся этим и вставим нового пользователя в нашу коллекцию Users:
Чтобы вставить документ в нашу коллекцию, мы используем метод insert(), который принимает пары ключ/значение документа, который мы хотим вставить.
db.users.insert({ “firstName”: “Johnny”, “lastName”: “Bravo” })
Это вставит новый документ, содержащий только пары ключ/значение firstName и lastName.
Чтобы найти этот документ, мы можем использовать метод find(), который принимает поле, на которое мы нацеливаемся, и значение, которое мы хотим, чтобы оно имело.
db.users.find({“firstName” : ”Johnny”})
Это вернет все документы в коллекции Users с именем «Johnny».
Чтобы обновить документ, мы используем метод update(), который следует аналогичному формату. Сначала он принимает объект запроса, который выбирает, какие документы нужно обновить, и второй объект с оператором $set, где мы указываем, какие поля мы хотим изменить и каким должно быть их значение.
db.users.update({“firstName”: “Johnny” }, {$set : {“favouriteColor”: “Turquoise”}} )
Это найдет все документы, которые имеют имя «Джонни», и изменит их любимый цвет на бирюзовый. Это также хороший пример гибкости Mongo DB. Если поле favouriteColor не существует, оператор $set автоматически добавит его с указанным значением.
Если позже Джонни закроет свою учетную запись, и мы захотим удалить его из нашей базы данных, мы можем сделать это с помощью метода deleteOne(), который следует синтаксису, аналогичному всем вышеперечисленным!
db.users.deleteOne({“firstName”: “Johnny”})
Это приведет к удалению первого документа с именем «Johnny».
Вот и все!
Вот краткое изложение того, как работают коллекции и документы, а также общий синтаксис, который вы можете использовать для запросов к базе данных MongoDB и выполнения основных операций CRUD.
Если вы хотите погрузиться немного глубже, я также настоятельно рекомендую посетить Университет MongoDB, который полон подробных руководств и отличных ресурсов.
Удачного кодирования!