MongoDB
Как импортировать JSON в MongoDB
Чтобы импортировать JSON в MongoDB, используйте mongoimport из MongoDB Database Tools. Главное — понять формат файла: это может быть массив JSON-документов или формат JSON Lines, где каждый документ идет отдельной строкой. От этого зависит команда импорта
Пример файла products.json как массив:
[
{ "title": "Худи", "price": 4900 },
{ "title": "Кроссовки", "price": 7990 }
]
Команда:
mongoimport \
--uri="mongodb://localhost:27017" \
--db=shop \
--collection=products \
--file=products.json \
--jsonArray
Ключ --jsonArray нужен, если файл содержит массив
Если файл в формате JSON Lines
Файл:
{ "title": "Худи", "price": 4900 }
{ "title": "Кроссовки", "price": 7990 }
Команда:
mongoimport \
--uri="mongodb://localhost:27017" \
--db=shop \
--collection=products \
--file=products.json
Для такого формата --jsonArray не нужен
Заменить коллекцию перед импортом
Если нужно удалить старые документы и загрузить новые:
mongoimport \
--uri="mongodb://localhost:27017" \
--db=shop \
--collection=products \
--file=products.json \
--jsonArray \
--drop
--drop удалит коллекцию перед импортом. Используйте его только там, где вы точно готовы потерять старые данные
Как проверить результат
Откройте mongosh:
mongosh
Проверьте количество:
use shop
db.products.countDocuments()
Проверьте первый документ:
db.products.findOne()
Если документы появились, импорт прошел
Импорт на удаленную MongoDB
Для удаленного сервера укажите полный connection string:
mongoimport \
--uri="mongodb://appuser:password@server.example.com:27017/shop" \
--collection=products \
--file=products.json \
--jsonArray
Если пароль содержит специальные символы, их нужно корректно экранировать в URI. Для MongoDB Atlas обычно используют строку подключения с mongodb+srv://
Что проверить перед импортом
Перед запуском откройте JSON-файл и проверьте одну запись. Поля должны совпадать с тем, что ожидает приложение: price числом, даты в понятном формате, id без случайных повторов. Если файл большой, сначала импортируйте маленький тестовый кусок в отдельную коллекцию:
mongoimport \
--uri="mongodb://localhost:27017" \
--db=shop \
--collection=products_test \
--file=products-small.json \
--jsonArray
Так вы увидите ошибки формата до массовой загрузки
Частые ошибки
Забыли —jsonArray
Если файл начинается с [ и содержит массив, добавьте --jsonArray
Неправильный JSON
Проверьте запятые, кавычки и закрывающие скобки. Один битый документ может остановить импорт
Импортировали не в ту базу
Проверьте --db и --collection. Часто документ уже есть, но в другой базе
Перезаписали коллекцию через —drop
Не используйте --drop на рабочей базе без резервной копии
Импортировали строки вместо чисел
Если в JSON цена записана как "4900", MongoDB сохранит строку. Фильтр по числам потом будет работать не так, как ожидается
После импорта откройте один документ и проверьте типы глазами. Это быстрее, чем потом искать, почему сортировка или фильтр ведут себя странно
Что почитать дальше по MongoDB
Если нужен общий маршрут по теме, откройте рубрику MongoDB. Для соседних задач пригодятся эти разборы:
- Discord bot на Python и MongoDB: как задать проверку
- Failed to start MongoDB database server: что проверить
- MongoDB Atlas: облачная база для первого проекта
- MongoDB Compass: подключение и первая коллекция без командной строки
Как проверить результат на практике
Для MongoDB-материала полезно делать три проверки: сначала выполнить команду на маленьком наборе тестовых документов, затем посмотреть результат через find() или MongoDB Compass, а после этого повторить действие на копии реальной структуры данных. Если запрос меняет документы, сначала запускайте его с фильтром на один документ и только потом расширяйте условие
Еще одна хорошая привычка — записывать исходное состояние и ожидаемый результат. Например: было три документа, после обновления изменился только один; был массив из пяти элементов, после операции остался нужный элемент; индекс появился в getIndexes(). Такая проверка быстро показывает, что вы исправили именно задачу, а не просто получили команду без ошибки