Модуль 1 · Подключение и первые данные

Справочник по MongoDB · модуль 1 · подключение и первые данные

Глава 1.0а

1.0а

Windows 10:
MongoDB 7.0 вместо 8.0

Сайт MongoDB по умолчанию предлагает последнюю версию сервера и Compass, а они на Windows 10 уже не поддерживаются: сервер 8.0 рассчитан на Windows 11, и на компьютерах колледжа он не ставится или не запускается. В этой главе — как полностью убрать то, что успело установиться, командами в PowerShell, а затем скачать с mongodb.com сервер 7.0 — версию, на которой сняты все выводы книги, — и подходящий к нему Compass.

Категория
Окружение и установка
Уровень
Начальный
Для кого
Только Windows 10. На Windows 11, macOS и Linux глава не нужна
Сколько времени
Около 20 минут, большая часть — скачивание

§1Почему 8.0 не подходит

У каждой версии MongoDB есть список систем, на которых её проверяли и поддерживают. Для Windows он такой — по документации установки на mongodb.com:

СерверWindows 11Windows 10Что в книге
8.0 и новееданетна этой версии выводы не сверялись
7.0даставится и работаетвсе выводы книги — MongoDB 7.0
6.0дадазапасной вариант, см. §13

С Compass то же самое: начиная с версии 1.38 он требует Windows 10 или новее, а выпуски 1.47 и позже вышли уже после окончания поддержки Windows 10 и рассчитаны на новые системы. Узнать свою версию Windows можно командой winver в строке «Выполнить» (Win+R) или в PowerShell:

PowerShellкакая у меня Windows
(Get-CimInstance Win32_OperatingSystem).Caption
Выводнапример
Microsoft Windows 10 Pro

Если там Windows 11, эта глава не нужна: ставьте версии с сайта как есть. Если Windows 10 — идём дальше.

§2Что поставим вместо

MongoDB Server 7.0.43Последний выпуск ветки 7.0. Выводы книги сняты на 7.0.40 — отличаться будет только последняя цифра версии.сервер
MongoDB Compass 1.46.11Последний выпуск Compass, вышедший до окончания поддержки Windows 10. С сервером 7.0 работает полностью.клиент
mongosh и Database ToolsИх трогать не нужно: они не зависят от версии сервера и работают с 7.0 так же. Команды ниже их не удаляют.остаются
Осторожно: данные сервера 8.0 будут удалены

Сервер 7.0 не открывает файлы, записанные сервером 8.0, поэтому папка данных удаляется вместе с сервером. Базы курса загружаются заново из репозитория практик — глава 1.0, §6. Если вы успели сделать что-то своё, сначала выгрузите это в Compass: Export Data у нужной коллекции.

§3Шаг 1. PowerShell от имени администратора

Удалять программы и службу может только администратор. Нажмите Win+X и выберите Windows PowerShell (администратор) — на некоторых компьютерах пункт называется Терминал (администратор). На вопрос «Разрешить этому приложению вносить изменения?» ответьте Да. В заголовке окна должно быть слово «Администратор».

Все команды главы вставляются в это окно целиком, блоком: скопируйте блок, щёлкните в окне правой кнопкой мыши — PowerShell вставит текст — и нажмите Enter. Команды главы проверены на Windows: ниже показано ровно то, что они выводят.

§4Шаг 2. Посмотреть, что установлено

Windows хранит список установленных программ в реестре — там же, откуда его берёт окно «Приложения и возможности». Команда ниже показывает всё, в названии чего есть MongoDB:

PowerShell · администраторвставить блоком
$keys = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
        'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
        'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $keys -ErrorAction SilentlyContinue |
    Where-Object DisplayName -like '*MongoDB*' |
    Select-Object DisplayName, DisplayVersion
ВыводWindows, проверено
DisplayName                            DisplayVersion
-----------                            --------------
MongoDB 8.0.32 2008R2Plus SSL (64 bit) 8.0.32
MongoDB Shell                          2.10.0
MongoDB Compass                        1.50.0

У нас три программы: сервер 8.0, Compass и оболочка mongosh. Первые две удалим, mongosh оставим — она работает с любой версией сервера. Если Compass в списке нет, следующие шаги его пропустят.

Windows · PowerShell — список установленных программ MongoDB
Windows · PowerShell — список установленных программ MongoDB

§5Шаг 3. Закрыть Compass, остановить сервер

Работающую программу удалить нельзя: файлы заняты. Закроем Compass и остановим службу сервера. Ключ -ErrorAction SilentlyContinue означает «если такой программы или службы нет — молча продолжить».

PowerShell · администраторвставить блоком
Stop-Process -Name 'MongoDB Compass', MongoDBCompass -Force -ErrorAction SilentlyContinue
Stop-Service -Name MongoDB -Force -ErrorAction SilentlyContinue
Get-Service -Name MongoDB -ErrorAction SilentlyContinue
ВыводWindows, проверено
Status   Name               DisplayName
------   ----               -----------
Stopped  MongoDB            MongoDB Server (MongoDB)

Последняя строка показывает службу после остановки: Stopped. Если вывода нет вовсе, службы не было — сервер ставился без неё.

§6Шаг 4. Удалить сервер и Compass

Удаляем программы их же деинсталляторами — так же, как кнопка «Удалить» в «Приложениях и возможностях», только без окон. Сервер установлен пакетом MSI, его удаляет msiexec /x. Compass, скачанный как .exe, устанавливается в папку пользователя и удаляется своей программой Update.exe --uninstall. Команда сама разберётся, какой случай перед ней, и не тронет mongosh и Database Tools:

PowerShell · администраторвставить блоком
$keys = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
        'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
        'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
$apps = Get-ItemProperty $keys -ErrorAction SilentlyContinue | Where-Object {
    $_.DisplayName -like 'MongoDB*' -and
    $_.DisplayName -notlike '*Tools*' -and $_.DisplayName -notlike '*Shell*' }
foreach ($app in $apps) {
    Write-Host "Удаляю: $($app.DisplayName)"
    if ($app.UninstallString -like 'MsiExec*') {
        Start-Process msiexec.exe -ArgumentList "/x $($app.PSChildName) /qn /norestart" -Wait
    } else {
        $exe = ($app.UninstallString -split '"')[1]
        Start-Process $exe -ArgumentList '--uninstall', '-s' -Wait
    }
}
ВыводWindows, проверено
Удаляю: MongoDB 8.0.32 2008R2Plus SSL (64 bit)
Удаляю: MongoDB Compass

Каждое удаление занимает от нескольких секунд до минуты; пока оно идёт, новое приглашение PS> не появится. Дождитесь его.

Windows · PowerShell — удаление сервера 8.0 и Compass
Windows · PowerShell — удаление сервера 8.0 и Compass

§7Шаг 5. Убрать папки, службу и Path

Деинсталлятор удаляет файлы, которые сам поставил, но оставляет созданное позже: папку данных сервера, настройки и сохранённые подключения Compass. Удалим их, службу — если она осталась — и папку сервера из переменной Path:

PowerShell · администраторвставить блоком
$paths = "$env:ProgramFiles\MongoDB\Server",
         "$env:ProgramFiles\MongoDB Compass",
         "$env:LOCALAPPDATA\MongoDBCompass",
         "$env:APPDATA\MongoDB Compass",
         'C:\data\db'
foreach ($p in $paths) {
    if (Test-Path $p) { Remove-Item $p -Recurse -Force; Write-Host "Удалено: $p" }
}
if (Get-Service -Name MongoDB -ErrorAction SilentlyContinue) { sc.exe delete MongoDB }
foreach ($scope in 'Machine', 'User') {
    $old = [Environment]::GetEnvironmentVariable('Path', $scope)
    if (-not $old) { continue }
    $new = ($old -split ';' | Where-Object { $_ -and $_ -notlike '*MongoDB\Server*' }) -join ';'
    if ($new -ne $old) {
        [Environment]::SetEnvironmentVariable('Path', $new, $scope)
        Write-Host "Path ($scope): убраны папки MongoDB\Server"
    }
}
ВыводWindows, проверено
Удалено: C:\Program Files\MongoDB\Server
Удалено: C:\Users\student\AppData\Local\MongoDBCompass
Удалено: C:\Users\student\AppData\Roaming\MongoDB Compass
Удалено: C:\data\db

Строки «Удалено» — только о тех папках, которые нашлись; у вас их список может быть другим. Переменная Path меняется лишь для новых окон — это важно в §10.

§8Шаг 6. Проверить, что ничего не осталось

PowerShell · администраторвставить блоком
$keys = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
        'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
        'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
$left = Get-ItemProperty $keys -ErrorAction SilentlyContinue | Where-Object {
    $_.DisplayName -like 'MongoDB*' -and
    $_.DisplayName -notlike '*Tools*' -and $_.DisplayName -notlike '*Shell*' }
"Программ MongoDB и Compass:  " + @($left).Count
"Служба MongoDB есть:         " + [bool](Get-Service -Name MongoDB -ErrorAction SilentlyContinue)
"Папка MongoDB\Server есть:   " + (Test-Path "$env:ProgramFiles\MongoDB\Server")
"Настройки Compass есть:      " + (Test-Path "$env:APPDATA\MongoDB Compass")
ВыводWindows, проверено
Программ MongoDB и Compass:  0
Служба MongoDB есть:         False
Папка MongoDB\Server есть:   False
Настройки Compass есть:      False

Должно быть ровно так: ноль программ и три False. Если какая-то строка отличается, выполните шаги 3–5 ещё раз — чаще всего мешал незакрытый Compass. Удаление завершено; перезагружать компьютер не нужно.

Windows · PowerShell — после удаления: ни программ, ни службы, ни папок
Windows · PowerShell — после удаления: ни программ, ни службы, ни папок

§9Шаг 7. Скачать сервер 7.0

Откройте страницу mongodb.com/try/download/community и прокрутите до карточки Community Server. Нажмите Select Package — под карточкой появятся три списка.

mongodb.com · Community Server — кнопка Select Package раскрывает выбор версии
mongodb.com · Community Server — кнопка Select Package раскрывает выбор версии

В списке Version по умолчанию стоит самая новая версия с пометкой (current). Выберите 7.0.43:

mongodb.com · список Version: выбираем 7.0.43
mongodb.com · список Version: выбираем 7.0.43

В Platform выберите Windows x64, в Package — msi, и нажмите Download. Файл mongodb-windows-x86_64-7.0.43-signed.msi весит около 600 МБ.

mongodb.com · выбрано: 7.0.43, Windows x64, msi
mongodb.com · выбрано: 7.0.43, Windows x64, msi

Та же ссылка напрямую: fastdl.mongodb.org/windows/mongodb-windows-x86_64-7.0.43-signed.msi.

§10Шаг 8. Установить сервер

Запустите скачанный файл двойным щелчком и пройдите мастер. На двух экранах нужно действовать не так, как предлагается по умолчанию, — они отмечены.

Приветствие мастера — Next
1. Приветствие мастера — Next
Лицензия: отметить I accept the terms — Next
2. Лицензия: отметить I accept the terms — Next
Тип установки: Complete
3. Тип установки: Complete
Служба: оставить как есть — сервер будет запускаться сам. Next
4. Служба: оставить как есть — сервер будет запускаться сам. Next
Важно: снять галочку Install MongoDB Compass, иначе установщик скачает последний Compass. Next
5. Важно: снять галочку Install MongoDB Compass, иначе установщик скачает последний Compass. Next
Готово к установке — Install
6. Готово к установке — Install
Установка завершена — Finish
7. Установка завершена — Finish

Тот же результат одной командой, без окон, — в PowerShell администратора из папки «Загрузки»:

PowerShell · администраторустановка без мастера
cd $env:USERPROFILE\Downloads
msiexec.exe /i mongodb-windows-x86_64-7.0.43-signed.msi /qb SHOULD_INSTALL_COMPASS=0 ADDLOCAL=ServerService,Client

SHOULD_INSTALL_COMPASS=0 обязателен: иначе установщик сам скачает последнюю версию Compass, которая на Windows 10 не поддерживается.

§11Шаг 9. Скачать Compass 1.46

На странице mongodb.com/try/download/compass в списке версий есть только последняя. Старые выпуски MongoDB хранит в архиве: под кнопкой Download нажмите More Options → Archived releases.

mongodb.com · Compass — More Options → Archived releases
mongodb.com · Compass — More Options → Archived releases

Ссылка ведёт на страницу выпусков Compass на GitHub — это официальный репозиторий MongoDB mongodb-js/compass. Найдите выпуск 1.46.11 (прямая ссылка: github.com/mongodb-js/compass/releases/tag/v1.46.11).

GitHub · выпуск Compass 1.46.11
GitHub · выпуск Compass 1.46.11

Внизу страницы в разделе Assets скачайте mongodb-compass-1.46.11-win32-x64.msi. Не перепутайте: файлы со словами isolated и readonly в названии — урезанные версии, darwin — для macOS.

GitHub · Assets — нужен mongodb-compass-1.46.11-win32-x64.msi
GitHub · Assets — нужен mongodb-compass-1.46.11-win32-x64.msi

Тот же файл лежит и на сервере MongoDB: downloads.mongodb.com/compass/mongodb-compass-1.46.11-win32-x64.msi.

§12Шаг 10. Установить Compass и подключиться

Запустите скачанный .msi. Мастер короткий: Next, папку оставить как есть, Install, Finish.

Приветствие — Next
1. Приветствие — Next
Папка установки — оставить, Next
2. Папка установки — оставить, Next
Install
3. Install
Finish
4. Finish

Проверим всё сразу в новом окне PowerShell — в старом переменная Path прежняя:

PowerShell · администраторвставить блоком
$keys = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
        'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*',
        'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $keys -ErrorAction SilentlyContinue |
    Where-Object DisplayName -like 'MongoDB*' | Format-Table DisplayName, DisplayVersion
Get-Service -Name MongoDB | Format-Table Status, StartType, Name
& "$env:ProgramFiles\MongoDB\Server\7.0\bin\mongod.exe" --version | Select-Object -First 1
ВыводWindows, проверено
DisplayName                            DisplayVersion
-----------                            --------------
MongoDB Compass                        1.46.11.0
MongoDB Shell                          2.10.0
MongoDB 7.0.43 2008R2Plus SSL (64 bit) 7.0.43

 Status StartType Name
 ------ --------- ----
Running Automatic MongoDB

db version v7.0.43
Windows · PowerShell — сервер 7.0.43 работает как служба, Compass 1.46.11 установлен
Windows · PowerShell — сервер 7.0.43 работает как служба, Compass 1.46.11 установлен

Служба MongoDB в состоянии Running с автозапуском, сервер — версии 7.0.43. Откройте Compass из меню «Пуск», на приветствии нажмите Start, затем Add new connection → Save & Connect: адрес mongodb://localhost:27017 уже подставлен.

Compass 1.46.11 подключён к серверу 7.0.43 на localhost:27017 — после загрузки видны базы курса hh, logs, org, sandbox и shop
Compass 1.46.11 подключён к серверу 7.0.43 на localhost:27017 — после загрузки видны базы курса hh, logs, org, sandbox и shop

Сервер новый и пустой. Загрузите базы курса — глава 1.0, §6, — и дальше всё идёт по книге.

На полях: не соглашайтесь на обновление Compass

Через несколько минут работы Compass может предложить обновиться до последней версии — той, что на Windows 10 не поддерживается. Нажмите Close, а чтобы вопрос не повторялся, в Settings → Privacy снимите галочку Enable Automatic Updates.

§13Частые ошибки

Что происходитЧто видноЧто делать
PowerShell открыт без прав администратораAccess is denied, Stop-Service: Cannot open MongoDB service, удаление не происходитЗакрыть окно и открыть заново через Win+X → «(администратор)», §3
Compass не закрытПосле §8 «Настройки Compass есть: True» или ошибка «файл используется другим процессом»Закрыть Compass в диспетчере задач и повторить шаги 3–5
Осталась папка данных 8.0Служба 7.0 не запускается; в журнале C:\Program Files\MongoDB\Server\7.0\log\mongod.log — ошибка о несовместимых файлах данныхУдалить сервер, выполнить §7 и поставить 7.0 заново
Установщик 7.0 сам поставил новый CompassВ списке программ Compass 1.50 или новееВ мастере не сняли галочку Install MongoDB Compass. Удалить Compass шагами 4–5 и поставить 1.46.11
Ошибка 1603 или 2503 в установщикеОкно «The installer has encountered an unexpected error»Установщик запущен без прав администратора: правой кнопкой по файлу → «Запуск от имени администратора»
Служба 7.0 не стартует на старом процессореСлужба сразу останавливается, в журнале нет строки Waiting for connectionsСерверу 5.0 и новее нужен процессор с инструкциями AVX. Поставить сервер 6.0 не поможет — тоже нужен AVX; поднять стенд в Docker тоже нельзя. Путь — Codespaces в браузере, глава 1.1а, §10
7.0 не ставится вовсеУстановщик сообщает о неподдерживаемой системеВзять сервер 6.0.29 на той же странице (§9, список Version) — он официально поддерживает Windows 10. Compass 1.46.11 работает и с ним

§14Шпаргалка

Что установлено Get-ItemProperty $keys | Where DisplayName -like '*MongoDB*'
Удалить msiexec /x {код} /qn # сервер Update.exe --uninstall -s # Compass .exe
Скачать mongodb.com/try/download/community # Version 7.0.43 · Windows x64 · msi github.com/mongodb-js/compass/releases # v1.46.11 · win32-x64.msi
Проверить Get-Service MongoDB mongod.exe --version # v7.0.43

Итог главы

MongoDB 8.0 и свежий Compass рассчитаны на Windows 11, поэтому на Windows 10 ставим сервер 7.0.43 — версию, на которой сняты выводы книги, — и Compass 1.46.11. Перед установкой старое удаляется целиком: программы — их деинсталляторами, затем папки данных и настроек, служба и запись в Path; проверка должна показать ноль программ и три False. Сервер скачивается с mongodb.com выбором версии в списке, Compass — из архива выпусков по ссылке Archived releases. Главное в мастере — снять галочку Install MongoDB Compass. После установки загрузите базы курса и возвращайтесь к главе 1.0.

Глава 1.0а · Windows 10: MongoDB 7.0 вместо 8.0 · Справочник по MongoDB Автор: Макаров Максим Николаевич