
📌 Что такое MongoDB
MongoDB — это база данных, в которой информация хранится не в таблицах, как в обычных базах, а в виде документов, похожих на JSON (или словарь
в Python).
Проще говоря:
MongoDB — это как шкафчик с ящиками, где каждый ящик (документ) содержит информацию в удобном формате “ключ: значение”, и можно хранить что угодно.
📁 Коллекция (Collection)
Коллекция — это как папка, в которой хранятся документы.
Похожа на таблицу в SQL, но тут нет фиксированных столбцов — каждый документ может быть уникальным.
Пример: Коллекция
users
может содержать документы про разных пользователей.
📄 Документ (Document)
Документ — это как одна запись с данными.
Он пишется в формате JSON (на самом деле BSON — это почти то же самое).
Каждый документ — это как структура данных или словарь:
{
"name": "John",
"age": 30,
"email": "john@example.com"
}
Это как один пользователь в коллекции пользователей.
🆔 Поле _id
Каждый документ автоматически получает уникальный ID (_id
) — как паспорт.
Ты можешь сам его задать или MongoDB сделает это за тебя.
📎 База данных (Database)
База данных в MongoDB — это как главная папка, в которой лежат коллекции.
MongoDB → База данных → Коллекции → Документы
🧰 Другие важные термины:
Термин | Пояснение |
---|---|
BSON | Внутренний формат MongoDB (как JSON, но быстрее и с типами данных) |
CRUD | Операции с данными: Create (создать), Read (читать), Update (обновить), Delete (удалить) |
Index | Как оглавление книги — помогает быстро находить нужные документы |
Query | Запрос — способ найти нужные документы по условиям |
Aggregation | Мощный инструмент для анализа и подсчётов, как GROUP BY в SQL |
Пример кода с пояснениями с урока
db.users.insert({
name: "Gleb",
age:31
})
db.users.insertMany([
{name: "vasya", age: 28},
{name: "petya", age: 38},
{name: "kolja", age: 18},
{name: "irina", age: 48},
{name: "marina", age: 58}
])
db.users.find() - отобразить всех юзеров
db.users.find({age:28}) - покажет всех чей возраст 28
db.users.find({$or:[{name:"petya"}, {age:18}]}) - проверит всех Петь и еще те у кого возраст 18
db.users.find({age:{$lt:28}}) - lt less than / меньше чем
db.users.find({age:{$gt:28}}) - gt grater than / больше чем
db.users.find({age:{$gte:28}}) -gte equals / больше либо равно
db.users.find({age:{$ne:28}}) - not equals не равен
db.users.find().sort({age:-1}) - (-1)сортировка на убывание
db.users.find().sort({age:1}) - (1) сортировка по возрастанию
db.users.find().limit(2) - отображает первые 2 записи
db.users.findOne({_id:ObjectId('682d82a0320c55eb0a1ba734')}) - показывает именно по этому ID
db.users.update(
{name:"Gleb"},
{
$set:{
name: "Ilon mask",
age: 45
}
}
)
-меняем/устанавливаем данные (обновляем) что ищем на что заменяем
db.users.updateMany(
{},
{
$rename:{
name: "fullname",
}
}
)
--меняем название поля
db.users.deleteOne({age:45}) - удалить по критерию
db.users.bulkWrite([
{
insertOne: {
document: {fullname: "nastya", age: 18}
}
},
{
deleteOne: {
filter: {fullname: "petya"}
}
}
])
-добавили пользователя, и удалили одного
db.users.update(
{fullname: "vasya"},
{
$set:{
posts:[
{title: 'javascript', text: 'js top'},
{title: 'mongo', text: 'monogo db'}
]
}
}
)
-добавили запись пользователю Вася
db.users.findOne(
{fullname: "vasya"},
{posts:1}
)
-отобразить посты пользователя
db.users.find(
{
posts:{
$elemMatch:{
title: 'javascript'
}
}
}
)
-отобразить пользователя у которого есть определенный пост
db.users.find({posts: {$exists:true}}) - показывает у кого есть посты
Подключение через PHP
🔍 1. Узнай версию своего PHP
В терминале (в PHPStorm):
php -i | findstr "PHP Version"
📥 Скачай правильный php_mongodb.dll
// на основании своей версии, изначально скачал не ту, АПАЧ выбивал ошибку. https://pecl.php.net/package/mongodb/1.16.0/windows

закидываем его в папку XAMPP – PHP – EXT (расширения)
далее нужно прописать в php.ini это расширение (без ; это раскоментит его)
extension=php_mongodb.dll
🔁 Перезапусти Apache в XAMPP

🔁 Перезапусти PHPStorm
php -m | findstr mongodb
должно отобразится установленное расширение mongo

Далее устанавливаем соеднение с кластером и проверяем, при запуске в логах должно отобразится “успешное подключение”
<?php
// Строка подключения (замени <db_password> на настоящий пароль!)
$uri = "mongodb+srv://glebdranitsyn:qwerty12345@cluster0.ke7lhpz.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0";
try {
// Подключаемся
$manager = new MongoDB\Driver\Manager($uri);
echo "✅ Успешное подключение к MongoDB Atlas<br>";
// Простой запрос к коллекции testDB.users
$query = new MongoDB\Driver\Query([]);
$cursor = $manager->executeQuery("testDB.users", $query);
echo "<h3>Документы из коллекции users:</h3>";
foreach ($cursor as $doc) {
echo "<pre>";
print_r($doc);
echo "</pre>";
}
} catch (MongoDB\Driver\Exception\Exception $e) {
echo "❌ Ошибка: " . $e->getMessage();
}

можно так же и через браузер запустить

Добавим документ / для того что бы на cloudMongo отобразилась testDB
<?php
// Строка подключения (твоя строка — всё правильно)
$uri = "mongodb+srv://glebdranitsyn:qwerty12345@cluster0.ke7lhpz.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0";
try {
// Подключение
$manager = new MongoDB\Driver\Manager($uri);
echo "✅ Успешное подключение к MongoDB Atlas<br>";
// 👉 Добавим документ
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert([
"name" => "Alice",
"email" => "alice@example.com",
"created_at" => new MongoDB\BSON\UTCDateTime()
]);
$manager->executeBulkWrite("testDB.users", $bulk);
echo "🟢 Документ добавлен в коллекцию users<br><br>";
// 👉 Читаем все документы
$query = new MongoDB\Driver\Query([]);
$cursor = $manager->executeQuery("testDB.users", $query);
echo "<h3>Документы из коллекции users:</h3>";
foreach ($cursor as $doc) {
echo "<pre>";
print_r($doc);
echo "</pre>";
}
} catch (MongoDB\Driver\Exception\Exception $e) {
echo "❌ Ошибка: " . $e->getMessage();
}

