Первые команды в mongosh

Минимальный цикл: создать документ, прочитать его и убедиться, что MongoDB всё сделала сама.

Всё взаимодействие с данными идёт через объект db и методы коллекций: db.<коллекция>.<метод>().

Выбираем базу

Начнём с учебной базы. Команда use переключает на неё (и создаст при первой записи):

use shop

Вставляем первый документ

Метод insertOne кладёт один документ в коллекцию. Коллекция products ещё не существует — MongoDB создаст её на лету:

db.products.insertOne({ name: "Кофе", price: 450, inStock: true })

В ответ оболочка подтверждает вставку и показывает сгенерированный идентификатор:

Результат:

{
  "acknowledged": true,
  "insertedId": "ObjectId('652f1a...')"
}

Мы не задавали поле _id — MongoDB добавила его сама. Это уникальный первичный ключ документа, о нём подробнее в следующем разделе.

Читаем данные: find

Метод find возвращает документы коллекции. Без аргументов — все:

db.products.find()

Результат:

[
  {
    "_id": "ObjectId('652f1a...')",
    "name": "Кофе",
    "price": 450,
    "inStock": true
  }
]

Чтобы получить только один документ, удобен findOne — он вернёт первый подходящий объект, а не массив:

db.products.findOne({ name: "Кофе" })

Считаем и удаляем

Сколько документов в коллекции — подскажет countDocuments:

db.products.countDocuments()

Удалить один документ по условию — deleteOne:

db.products.deleteOne({ name: "Кофе" })

Из чего состоит команда

Любой вызов читается слева направо: объект db → имя коллекции → метод → аргумент-фильтр или документ. Например, db.products.find({ price: 450 }) — «в базе, в коллекции products, найди документы, где price равно 450». Этот шаблон вы будете использовать постоянно.

Итог

  • Команды строятся по шаблону db.<коллекция>.<метод>(<аргумент>).
  • insertOne добавляет документ и сам генерирует _id; коллекция создаётся при первой вставке.
  • find возвращает набор документов, findOne — один; deleteOne удаляет по условию.
Проверьте себя
1. Что произойдёт, если вызвать insertOne для несуществующей коллекции?
AЗапрос завершится ошибкой
BMongoDB создаст коллекцию автоматически и вставит документ
CДокумент потеряется без сообщения
DНужно сначала выполнить CREATE COLLECTION
2. Чем findOne отличается от find?
AfindOne работает только с числами
BfindOne возвращает один документ (объект), а find — набор (массив)
Cfind нельзя использовать с фильтром
DОни полностью идентичны
3. Откуда берётся поле _id, если мы его не указали при вставке?
AЕго нужно всегда указывать вручную
BMongoDB генерирует его автоматически
CОно остаётся пустым
DЕго придумывает драйвер приложения, не база
Поддержать проект