Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Databases
Code

Начало работы с MongoDB - Часть 1

by
Difficulty:IntermediateLength:MediumLanguages:

Russian (Pусский) translation by Sergey Zhuk (you can also view the original English article)

Готовы начать ознакомление с MongoDB, одной из самых крутых технологий для веб разработки?

В этой новой серии статей, вы пройдете путь от новичка до профессионала, и будете так же свободно использовать MongoDB в своих приложениях, как и MySQL. Но сначала, ознакомимся с основами.

Почему MongoDB?

А что если бы вы могли хранить свои модели точно также, как вы их представляете?

В объектно-ориентированной разработке мы поощряем разработку кода через логические модели, так чтобы нам проще было представлять их в уме. Когда мы так делаем, то можем лучше представить логические операции, которые используются для взаимодействия между ними.

И что если бы у нас была возможность хранить программные модели точно в таком же виде, как мы их себе представляем? Что если бы мы могли хранить их как есть, вместо пары строчек в таблице. Вы сможете реализовать такое, изучив MongoDB.

В этой серии статей, мы изучим все, начиная от основ MongoDB, таких как создание, изменение и удаление баз данных и записей, и заканчивая выполнением сложных поисковых запросов, а так же агрегированием данных с помощью MapReduce. Итак без особых церемоний – давайте приступим!

Обратите внимание: эта статья написана с расчетом на использование NIX систем, таких как Mac OSX, Linux BSD и прочих. Но вы также можете продолжить чтение, если у вас стоит Windows, так как для этой платформы так же есть все необходимые инструменты.


Шаг 1: Установка Mongo

Итак, вот где начинается веселье. Мы начнем с установки Mongo. Идем на официальный сайт MongoDB и переходим по ссылке с загрузками.

The MongoDb link to downloads

Она приведет вас на страницу, где вы можете выбрать свою архитектуру и платформу.

The MongoDb download options

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

Если у вас NIX машина, то лучше использовать ее менеджера пакетов, чтобы установить последнюю версию для вашей платформы.

Затем открываем термин и набираем mongo. Эта команда откроет программную оболочку Mongo. Если все прошло нормально, то вы увидите следующее:

The MongoDb shell

Если у вас такой вывод, то можно продолжать.


Шаг 2: Создание базы данных/вставка записей

Изначально нет еще никакой базы данных. Но не волнуйтесь, она будет автоматически создана, как только мы начнем вставлять записи, чем мы сейчас и займемся. Скопируйте содержимое ниже и вставьте в оболочку mongo

Все в порядке? Отлично! Чтобы удостовериться, что база была создана, а документы вставлены, введем следующую команду:

Если все идет по плану, то вы увидите следующий вывод:

Finding all records

Он показывает, что все записи в базе были созданы. Перед тем как мы продолжим дальше, на одну вещь следует обратить внимание - поле id. Если вы явно не указываете это поле, то Mongo автоматически генерирует его для вас. Причиной тому - каждая запись должна иметь уникальное поле id.

Вы можете видеть, что у нас есть по одной записи на каждую нашу вставку - так что мы можем смело начать писать запросы.


Шаг 3: Поиск записей

Помните предыдущую команду? Она возвращала и отображала каждую запись в базе. Удобно, не правда ли, но как сделать ее более конкретной? Как нам найти всех актрис, убрав актеров мужского пола? Это хороший вопрос, ответом на который являются селекторы.

Селекторы

Селекторы в MongoDB равнозначны условиям where в SQL. Как и условия where, селекторы в Mongo позволяют нам следующее:

  • указать критерию, которая ДОЛЖНА совпадать. например условие AND
  • указать критерию, которая МОЖЕТ совпадать. например, условие OR
  • указать критерию, которая ДОЛЖНА существовать
  • и много всего другого

Записи, которые ДОЛЖНЫ совпадать

Начнем с базового селектора. Допустим нам нужно найти всех актеров женского пола
. Чтобы выполнить это, необходимо выполнить следующую команду:

Здесь мы указали, что пол должен быть равен 'f'.

Выполнение этой команды вернет следующий вывод:

Finding all female records

Что если нам нужно найти актеров мужского пола? Выполним следующую команду:

И получим такие результаты:

Finding all male records

Поиск по нескольким условиям

Поднимемся на ступеньку выше. Будем искать актеров англичан мужского пола.

Выполнение этой команды вернет следующие результаты:

Finding all male, English, records

А что на счет актрис из Англии или Америки. Легко! Лишь немного изменим нашу предыдущую команду, чтобы включить американок:

Для этого запроса мы увидим следующие результаты:

Finding all male, English or American, records

Шаг 4: Сортировки записей

Например, нам нужно отсортировать записи, скажем по имени или национальности. Как и в SQL, у Mongo есть команда sort. Как и команда find, она может принимать список опций, чтобы определить порядок сортировки.

Но в отличии от SQL, мы по-другому указываем сортировку по возрастанию и убыванию. Делается это следующим образом:

  • По возрастанию: -1
  • По убыванию: 1

Рассмотрим пример:

В этом примере мы получаем всех актеров мужского пола, англичан и американцев, и сортируем их по национальности, по убыванию.

Finding all male, English or American, records sorted by nationality

А как на счет сортировки по национальности по убыванию, а по имени по возрастанию? Вообще не проблема! Обратите внимание на этот запрос, в нем мы немного изменили предыдущий.

В этот раз мы получим следующие результаты:

Finding all male, English or American, records sorted by nationality first and first name second

Видно, что в это раз Arnold Schwarzenegger располагается перед Tony Curtis.


Шаг 5: Ограничение записей

Что если у нас есть большой набор данных, и нам нужно ограничить результаты только до 2. Mongo для этого предоставляет команду limit, похожую на аналог из MySQL. Давайте изменим наш предыдущий запрос и вернем только 2 записи. Взгляните на следующую команду:

Выполнив ее мы получим следующие результаты:

Limit output to 2 records

А если нам нужны третья и четвертая записи, то есть мы хотим пропустить первые две? И снова у Mongo есть для этого команда. Смотрим на дальнейшее изменение предыдущей команды:

Выполнив, мы получим следующие результаты:

Limit output to the 3rd and 4th records

В сравнении с изначальным запросом видно, что две записи были пропущены.


Шаг 6: Обновление записей

Как и ожидалось Mongo предоставляет так же возможность для обновления записей. Как и в случае с методом find и запросами SQL, необходимо указать критерии для выборки записи, которую требуется изменить, затем данные в этой записи, которые мы собираемся изменить.

Допустим нам нужно обновить запись для James Caan и указать что его волосы серые, а не коричневые. Для этого выполняем функцию update. Рассмотрим пример, представленный ниже:

Теперь если вы это успешно выполните, то не будет никаких признаков того, успешно ли выполнилось или нет. Чтобы узнать, что запись была успешно обновлена, необходимо найти ее. Давайте это и сделаем.

После этого вы увидите следующий результат:

Update record

Он показывает, что обновление прошло успешно. Стоит обратить внимание, что если вы не передадите модификатор $set, то вы замените запись, вместо обновления. Будьте осторожны!


Шаг 7: Удаление записей

Думаю, что нам этом шаге вы уже начали понимать основную идею работы с Mongo. Все верно, если вы хотите удалить запись, то вам нужно передать набор селекторов, точно так же как вы бы делали это в SQL, чтобы определить, какие записи вы собираетесь удалить. Если вы этого не сделаете, то будут удалены все записи - вся база.

Итак, допустим нам нужен James Caan в нашем списке актеров. Уберем его из базы помощью следующей команды:

Точно так же как и с обновлением, никакого вывода, подтверждающего удаление, не будет - поэтому чтобы удостовериться, просто поищем запись.

После этой команды видно, что ничего не возвращается. Если у вас такой же результат, то мы успешно удалили James Caan из нашей базы. Но, что если нам нужно удалить все записи из базы?

Чтож, просто убираем все селекторы из предыдущего запроса, как показано ниже.

После выполнения команд, представленных выше, мы ничего не увидим, что означает пустую базу данных.

Remove all records

Заключение

В этом быстром введении в работу с MongoDB, мы рассмотрели следующие темы: 

  • Что такое Mongo
  • Как ее устанавливать
  • Как создавать, искать, изменять и удалять записи

Уже с этими знаниями вы можете начать практиковаться и узнавать больше об этой замечательной технологии. Если вам нужно больше информации, то задавайте вопросы на сайте MongoDB, или подпишитесь на аккаунт @mongodb в Twitter.

В следующей статье, мы начнем с более сложных запросов. Так что оставайтесь на связи и больше спасибо за чтение.

Обновление: вторая часть этой серии была опубликована и находится здесь.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.