0Pricing
MongoDB Academy · Урок

Основы оболочки mongosh

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

«Основы оболочки mongosh» — бесплатный урок MongoDB Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MongoDB Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MongoDB Academy содержит 4 уроков всего.

What Is mongosh?

mongosh — это официальная оболочка MongoDB, созданная на базе Node.js, поэтому вы можете использовать в ней современный JavaScript. Это стандартный способ подключения из командной строки.

# Install mongosh on macOS
brew install mongosh

# Connect to a local MongoDB instance
mongosh

# Connect to an Atlas cluster
mongosh 'mongodb+srv://user:pass@cluster0.abc.mongodb.net/myapp'

# Connect with explicit host and port
mongosh --host localhost --port 27017

Navigating Databases and Collections

Несколько команд помогут вам сориентироваться: show dbs выводит список баз данных, команда use переключает на одну из них, а show collections показывает их содержимое. Переменная db всегда указывает на вашу текущую базу данных.

// Navigate in mongosh
show dbs
// admin   0.000GB
// myapp   0.008GB

use myapp
// switched to db myapp

db
// myapp

show collections
// users
// orders

Your First Insert

Добавление вашего первого документа — это одна строка: insertOne. Она возвращает новый _id, а быстрая команда findOne подтверждает, что данные сохранены. В коде представлены оба этих шага.

// Insert one document
db.users.insertOne({
  name: 'Alice',
  email: 'alice@example.com',
  age: 28,
  createdAt: new Date()
});
// { acknowledged: true, insertedId: ObjectId('64a2f3b1...') }

// Verify it was stored
db.users.findOne();
// { _id: ObjectId('64a2f3b1...'), name: 'Alice', ... }

Basic find() Queries

find возвращает все соответствующие документы; передайте фильтр, чтобы сузить выборку, или используйте findOne, если нужен ровно один документ. Пустой фильтр возвращает всё. В коде приведено несколько примеров.

// Find all documents
db.users.find({});

// Find with an equality filter
db.users.find({ name: 'Alice' });

// findOne by _id
db.users.findOne({ _id: ObjectId('64a2f3b1...') });

// Find with multiple conditions (implicit AND)
db.users.find({ age: 28, active: true });

// Type 'it' in shell to get next 20 results

Counting and Limiting Results

Несколько вспомогательных методов позволяют управлять количеством возвращаемых данных: countDocuments, а также limit и skip в запросе. В совокупности limit и skip составляют основу пагинации. В коде они продемонстрированы.

// Count active users
db.users.countDocuments({ active: true });
// 842

// Get first 5 users
db.users.find({}).limit(5);

// Skip first 10, get next 5 (page 3 of 5-per-page)
db.users.find({}).skip(10).limit(5);

// Fast approximate total
db.users.estimatedDocumentCount();
// 4823

Sorting Query Results

Используйте sort для упорядочивания результатов — 1 для сортировки по возрастанию, -1 для сортировки по убыванию. Можно даже сортировать по нескольким полям одновременно для разрешения неоднозначностей. В коде показано несколько вариантов сортировки.

// Sort by age descending (oldest first)
db.users.find({}).sort({ age: -1 });

// Sort by last name then first name
db.users.find({}).sort({ lastName: 1, firstName: 1 });

// Most recently created first
db.users.find({}).sort({ createdAt: -1 }).limit(10);

// Combined: find active users, sort by age, limit to 5
db.users.find({ active: true }).sort({ age: 1 }).limit(5);

Projections: Selecting Fields

Проекция определяет, какие поля будут возвращены: 1 — включить, 0 — исключить. Это позволяет экономить пропускную способность и память, когда вам не нужны все поля. В коде представлены примеры.

// Include only name and email (exclude everything else)
db.users.find({}, { name: 1, email: 1 });
// { _id: ObjectId('...'), name: 'Alice', email: 'alice@...' }

// Exclude _id too
db.users.find({}, { name: 1, email: 1, _id: 0 });
// { name: 'Alice', email: 'alice@...' }

// Exclude sensitive fields
db.users.find({}, { passwordHash: 0, ssn: 0 });

Pretty Printing and Shell Helpers

mongosh автоматически красиво оформляет результаты. Удобные вспомогательные функции, такие как toArray, forEach, distinct и explain, позволяют заглянуть в процесс выполнения запроса. Код демонстрирует их использование.

// Get all distinct cities from user addresses
db.users.distinct('address.city');
// ['Chicago', 'London', 'Tokyo', ...]

// Iterate with forEach
db.users.find({ active: true }).forEach(user => {
  print(user.name + ' - ' + user.email);
});

// Check if query uses an index
db.users.find({ email: 'alice@test.com' }).explain('executionStats');

Quick Update and Delete Commands

Вы разберете полный CRUD позже, но основные команды — это updateOne, deleteOne и deleteMany. Всегда используйте $set при обновлении, иначе вы замените документ целиком!

// Update a specific field (CORRECT: use $set)
db.users.updateOne(
  { email: 'alice@example.com' },
  { $set: { age: 29, updatedAt: new Date() } }
);

// Delete one document
db.users.deleteOne({ email: 'alice@example.com' });

// WARNING: This REPLACES the entire document (no $set):
// db.users.updateOne({ email: '...' }, { age: 29 });
// Now the document has ONLY { _id, age: 29 } !!!

Shell Variables and Scripting

Поскольку mongosh — это полноценный JavaScript, вы можете использовать переменные, циклы и скрипты для автоматизации задач, что значительно мощнее возможностей обычного SQL-интерфейса командной строки. В коде показан пример цикла.

// Variable-driven query
const targetCity = 'Chicago';
const users = db.users.find({ 'address.city': targetCity }).toArray();
print('Users in ' + targetCity + ': ' + users.length);

// For loop to seed test data
for (let i = 1; i <= 10; i++) {
  db.products.insertOne({ name: 'Product ' + i, price: i * 10 });
}

// Run from CLI without entering the shell:
// mongosh mydb --eval "db.users.countDocuments({})"

Connecting to Atlas From the Shell

Чтобы подключиться к Atlas, скопируйте строку подключения из его интерфейса — она использует протокол mongodb+srv, который находит ваш кластер через DNS. Сохраните её в переменной окружения, а не в истории командной оболочки.

# Store URI in environment variable (never hard-code credentials)
export MONGODB_URI='mongodb+srv://alice:s3cr3t@cluster0.abc.mongodb.net'

# Connect from shell
mongosh $MONGODB_URI

# Switch to your app database
use myapp

# Verify connection
db.runCommand({ ping: 1 })
# { ok: 1 }

Quick Check

Проверьте свое понимание концепций MongoDB и баз данных NoSQL из этого урока.

Lesson Recap

Вы узнали, что mongosh — это оболочка JavaScript, что проекции выбирают поля, а для формирования результатов можно объединять методы sort, limit и skip. Далее: вставка документов.

Часто задаваемые вопросы

Урок «Основы оболочки mongosh» бесплатный?

Да — полный текст урока «Основы оболочки mongosh» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MongoDB Academy, подпишись на CoddyKit PRO. Курс MongoDB Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы оболочки mongosh»?

Вы научитесь переключать базы данных, выводить список коллекций и интерактивно выполнять первые запросы к документам с помощью mongosh. Ты практикуешь MongoDB Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать MongoDB Academy?

Предыдущий опыт не требуется. MongoDB Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Основы оболочки mongosh»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке MongoDB Academy?

Да. Каждый урок MongoDB Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что такое документ BSON?
  2. Коллекции и таблицы SQL
  3. Базы данных, коллекции и пространства имён
  4. Основы оболочки mongosh
← Назад к MongoDB Academy