Встановлення локальної MongoDB і основні команди

Встановлення і запуск

Просунуті розробники можуть встановити MongoDB локально на комп'ютер. Скористаємося інструкцією встановлення MongoDB для MacOS.

  1. Якщо на комп'ютері не встановлено Xcode, то потрібно через термінал встановити командний рядок Xcode.

terminal
xcode-select --install
  1. На комп'ютері потрібно встановити Homebrew, який дозволяє з командного рядка встановлювати додаткові пакети.

terminal
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. Тепер через Homebrew потрібно встановити формулу для роботи з MongoDB

terminal
brew tap mongodb/brew
  1. Оновити Homebrew до останньої версії

terminal
brew update
  1. Встановити локальну версію MongoDB 6.0 Community Edition.

terminal
brew install mongodb-community@6.0
  1. Щоб запустити локальну версію MongoDB виконайте таку команду в терміналі.

terminal
brew services start mongodb-community@6.0
  1. Щоб зупинити MongoDB виконайте таку команду в терміналі

terminal
brew services stop mongodb-community@6.0

Додаткові налаштування можна перевірити на офіційному сайті MongoDB.

Щоб під'єднатися до локальної версії MongoDB використовуємо таку адресу.

mongodb://localhost:27017/

Можна скористатися програмою Compass

Можна під'єднатися і за допомогою програми Robo 3T.

Основні команди MongoDB

mongosh - команда для заходу до MongoDB через термінал

show dbs - Команда, щоб переглянути, які є наразі бази даних в MongoDB.

use - Команда для створення бази даних, або звернення до неї, якщо вже існує. (Якщо бази не було то створить, якщо була то звернеться до неї)

db - Команда, яка покаже в якій базі даних ми перебуваємо

show collections - показати колекції, які є в базі даних. Якщо Колекцій немає, то нічого не покаже.

insertOne - метод додавання одного документа до колекції в базі даних. Перебуваючи в базі даних вказуємо через крапку db потім назву колекції, потім назву метода і в нього передаємо як аргумент обʼєкт який хочемо записати в колекцію.

terminal
 db.users.insertOne({name: "Khomiak", year: 1986})

Як бачимо, згенерувався унікальний _id, структуру якого розглядали раніше. Подивимося через Compass і Robo 3T на структуру нашої бази даних. У базі даних users створилася колекція users, а в ній документ з переданими даними у формі обʼєкта.

insertMany - Метод додавання кількох документів до колекції в базі даних. передають масив обʼєктів. А метод insert може передавати як один, так і кілька документів.

terminal
 db.users.insertMany([{name: "Christ", year: 0}, {name: "Mahatma Gandhi", year: 1869}])

Обмеження щодо використання імен ключів:

  1. Символ $ не може бути першим символом в імені ключа

  2. Ім'я ключа не може містити символ крапки .

  3. Не використовуйте ім'я _id

find - Метод, який робить вибірку із колекції в базі даних за певним параметром. Повертає масив обʼєктів де є збіг. (Якщо не вказати аргумент, то поверне всю колекцію).

terminal
db.users.find({_id: ObjectId("64c2620d7257b2021a090e1a")}) 

Вибірки за умовами. Можна вибірку робити прописуючи умови пошуку. Для цього використовують спеціальні оператори (MongoDB Operators). Наприклад $lt - less than, вибере все менше за вказане число. $gt - greater than, вибере все що більше за вказане число. ($eq - дорівнює, $gte - більше або дорівнює, $lte - менше або дорівнює

terminal
db.users.find({year: { $gt: 1900 }}) 

Можна, наприклад, вибірку з бази робити використовуючи логічні оператори (наприклад $or для об'єднання вибірок або $and, коли перетинаються вибірки тощо).

terminal
db.users.find({ $or: [ {year: { $gt: 1900 }}, { name: "Christ" } ] })

Якщо ми хочемо якесь поле прибрати з відповіді, то потрібно його вказати другим параметром.

terminal
db.users.find({year: { $gt: 1900 }}, {year: 0}) 

А якщо навпаки хочемо лишити поля, а всі інші не повертати, то пишемо другим параметром обʼєкт із назвами параметрів і 1 після двокрапки {year: 1}. Тоді в результаті будуть тільки зазначені поля. Поле _id виводиться завжди. його можна прибрати тільки примусово _id: 0.

Якщо всередині документа є поле яке представляє об'єкт, то вибірку і пошук можемо робити через крапку і назву параметра.

terminal
db.users.find({'additional.nationality': 'ukr' }) 

limit - обмеження вибірки в межах вказаного числа

terminal
db.users.find().limit(3);

skip - Пропускає вказану кількість документів із вибірки

sort - сортування вибірки за певним полем за зростанням (1) або спаданням (-1). наприклад sort({ name: 1 })

db.users.find().sort({ year: 1 });

count - повертає кількість документів у колекції.

terminal
db.users.count();

$exists - оператор який включає до вибірки тільки ті документи які містять певне поле

terminal
db.users.find({additional: {$exists: true} });

$type - повертає у вибірку тільки ті документи в яких поле є певного типу

terminal
db.users.find({year: {$type: 'number'} });

$regex - задає регулярний вираз якому має відповідати поле.

Результати вибірки називають курсорами

terminal
const cursor = db.users.find();

Вся докладна документація на сайті проєкту MongoDB.

deleteOne, deleteMany - методи видалення одного або документів із колекції, які задовольняють умову.

terminal
db.users.deleteOne({_id: ObjectId("64c2620d7257b2021a090e1b")})

Також документ із колекції можна видалити методом remove (синтаксис такий само).

updateOne, updateMany - методи оновлення одного або документів із колекції, які задовольняють умову. Першим параметром передають умову, а другим, обʼєкт з полями, які треба оновити.

terminal
db.users.updateOne({_id: ObjectId("64c25d427257b2021a090e19")}, { $set: {name: "Oleksandr Khomiak"}})

Покликання:

MongoDB

Інсталяція MongoDB

Last updated