You are currently viewing MongoDB: Начало работы

MongoDB: Начало работы

Введение в MongoDB  

Терминология:

Базу данных MongoDB можно назвать контейнером для всех коллекций.

  • Коллекция — это куча документов MongoDB. Это похоже на таблицы в СУБД.
  • Документ состоит из полей. Он похож на кортеж в СУБД, но здесь он имеет динамическую схему. Документы одной и той же коллекции не обязательно должны иметь один и тот же набор полей

Приступая к работе 

После установки MongoDB вы сможете увидеть весь установленный файл внутри C:\Program Files\MongoDB\ (расположение по умолчанию). В C:\Program Files\MongoDB\Server\3.2\bin, есть куча исполняемых файлов, и краткое описание о них будет:

mongo: Интерфейс командной строки для взаимодействия с бд. 
mongod: Это база данных. Настраивает сервер. 
mongodump: Он сбрасывает двоичный файл базы данных(BSON). 
mongoexport: Экспортирует документ в формат Json, CSV 
mongoimport: Для импорта некоторых данных в базу данных. 
mongorestore: для восстановления всего, что вы экспортировали. 
mongostat: Статистика баз данных

Теперь вы можете начать запускать сервер MongoDB. Запустите командную строку и перейдите в папку, где установлены исполняемые файлы MongoDB (C:\Program Files\MongoDB\Server\3.2\bin\ но в будущем этот путь может измениться). Просто введите “mongod”, и появится сообщение об ошибке о том, что путь \data\db не существует:

Это означает, что путь к хранилищу по умолчанию C:\data\db не был найден. Таким образом, вы можете создать каталог C:\data\db самостоятельно или по команде mkdir. Вы также можете изменить путь по умолчанию с помощью переключателя –dbpath <путь> с помощью команды “mongod”.
После создания этого каталога снова запустите команду “mongod”, и она запустит сервер на порту 27017.

Теперь нам нужно запустить нашего клиента. Итак, откройте другой терминал и измените каталог на путь MongoDB. Просто наберите “mongo”, и ваш клиент встанет, пытаясь подключиться к серверу.

Это будет интерфейс командной строки для взаимодействия и администрирования баз данных. Эта оболочка является своего рода консолью JS. Вы можете попробовать это в разных командах JS, чтобы проверить это. Так как наш клиент готов, теперь мы можем приступить к работе с базой данных. Мы видим, что используемая база данных называется “test”. Вы можете просматривать базы данных с помощью “see dbs” и переключаться на другие базы данных, такие как “local”, набрав “use <dbname>”.

Обратите внимание, что существующих коллекций нет. Это можно увидеть, введя команду “show collections”.

Давайте начнем с добавления некоторых данных в нашу базу данных. Мы можем создать коллекцию методом db.createCollection(name, { size : …, capped : …, max : … } )

Но мы создали случайно сгенерированный файл json( данных о сотрудниках) и импортируем его в нашу базу данных, введя

mongoimport --jsonArray --db test --collection employee_data <  C:\mongoJson\employee_data.json

Это позволит импортировать json-документ с данными о сотрудниках, на который ссылается путь, указанный в коллекции с именем “employee_data” базы данных “test”.

Теперь, чтобы убедиться, что коллекция импортирована, вы можете ввести “показать коллекции” в командной оболочке. Вы можете использовать такие методы, как count (), find (), findOne (), для выполнения некоторых очень простых запросов к вашему документу.
Вы можете видеть, что в каждом документе есть поле под названием “_id”, которое не было указано в импортированных данных. Причина в том, что MongoDB предоставляет значение по умолчанию “_id” (если не указано явно), которое представляет собой 12-байтовое шестнадцатеричное число, обеспечивающее уникальность каждого документа. Вы даже можете изменить это поле “_id”, но это не рекомендуется.

Индексирование: Вы также можете использовать индексацию, если ваш запрос возвращает более одного документа. Например, db.employee_data.find() возвращает все документы в коллекции, но если вам нужен только 7-й, просто выполните db.employee_data.find()[6], и он вернет конкретный документ. [Примечание : Индексация здесь начинается с 0].

Прогнозы: Допустим, для запроса вам нужны только некоторые конкретные детали, а не весь набор деталей в документе. Для этого вы можете использовать прогнозы. После того, как ваш объект запроса просто сделает необходимые поля равными 1, а другие будут автоматически приняты за 0. Но помните, что поле “_id” всегда подразумевается равным 1 неявно, и если вы не хотите видеть уродливое поле “_id”, то вам нужно сказать это в своей проекции “_id : 0”.

Запросы:

1. Найдите количество сотрудников в компании “GEEKS FOR GEEKS”

> db.employee_data.find( { company= “GEEKS FOR GEEKS” } ).count()

2. Покажите подробную информацию обо всех сотрудниках по имени “Sandeep Jain”.

> db.employee_data.find( { name: “Sandeep Jain” }

Здесь будут отображаться все документы, соответствующие данному имени.

3. Укажите возраст, пол и адрес электронной почты, но не “_id” сотрудника по имени. (Предположим, что есть только один сотрудник с данным именем). Использование прогнозов

> db.employee_data.find( { name: “Harshit Gupta” }, { _id:0, age:1, gender:1, email:1 } )

Мы также можем хранить выходные данные запросов в переменных, а затем делать с ними интересные запросы.

4. Выведите имена всех сотрудниц.

> var femaleEmp = db.employee_data.find( { gender: “female” } )
for ( var i = 0 ; i < femaleEmp.count() ; i++){
print ( femaleEmp[i].name)
} 
> db.employee_data.find( { gender: "female" }, { _id:0, name:1 } )

Обратите внимание, что 1-е решение просто выводит имена, в то время как 2-е решение выводит их в объектном формате.