Не удалось найти файл объявления модуля mongodb

Обновлено: 06.07.2024

Я слежу за учебными пособиями по Node.js от Code Academy на Youtube, и в настоящее время смотрю видео номер 19. Вы можете видеть, что в 3:10 он набрал mongo, а затем переключился на базу данных.

Но в моем случае это дает следующую ошибку 'mongo' is not recognized as an internal or external command, operable program or batch file. Почему это происходит?

Я выполнил шаги точно так, как показано на видео. Чтобы пролить свет, в моем случае он подключен к базе данных и вставлены 2 документа (как показано).Но на следующем этапе он дает эту ошибку. Пожалуйста, помогите мне, разработчики.

Вы должны добавить исполняемый файл mongo в PATH, чтобы команды были доступны из-за пределов папки bin MongoDB.

Как утверждали некоторые, путь монго из версии 4.0 немного изменился: C: \ Program Files \ MongoDB \ Server \ 4.0 \ bin

  • 1 Исполняемые файлы MongoDB находятся в "C: \ Program Files \ MongoDB \ Server \ 4.0 \ bin"

Если вы используете Windows, вам нужно добавить mogo (C: \ Program Files \ MongoDB \ Server \ 4.0 \ bin) в PATH Env, затем закрыть терминал и снова открыть . mongo --version должен работать

Убедитесь, что у вас установлено программное обеспечение mongodb. Вы можете скачать программное обеспечение для своей операционной системы по следующей официальной ссылке:

Для пользователей Windows следуйте инструкциям по следующей официальной ссылке:

  • 1 Вы так быстро ответили .. спасибо .. Надеюсь, это поможет другим .. :)
  • @ShubhamJha;) . Я знаю, что уже поздно . Я нашел этот вопрос полезным и связанным с моей проблемой, но не ответом, поэтому я опубликовал свой ответ, чтобы помочь другим .
  • 1 это мило с вашей стороны .. вас не заботила дата публикации вопроса, а решение проблем других людей .. добрый дух помощи .. :)

Во-первых, mongo не является модулем node.js.

Эта ошибка возникает из-за того, что ваша система не распознает команду "mongo"

получаемая ошибка указывает на то, что пакет NPM для MongoDB установлен неправильно.

исправление здесь зависит от того, как вы планируете использовать NPM. Диспетчер пакетов NPM работает в двух различных режимах: локальном и глобальном.

первый (по умолчанию) режим "местный".

если вы идете в папку с server.js вы увидите подпапку с именем node_modules . Под этой папкой будет . Если этой папки нет, тогда mongodb модуль не установлен на этом пути.

вы также можете установить пакет MongoDB глобально, используя npm install -g mongodb . Это полезно, если вы используете много узлов.JS командной строки, но менее полезно,если вы развертываете все это.

Примечание: есть развивающийся стандарт вокруг package.json . The package.json является стандартизированным способом включения всех зависимостей для данного модуля. Это позволяет запускать npm update или npm install в корне проекта / пакета и эффективно "втянуть" все зависимости. Это значительно упрощает процесс развертывания и процесс сохранения зависимостей в режиме онлайн.

после попытки в течение некоторого времени установить его без успеха (так как я новичок в mongo и node), мне действительно не хватало шага npm link. Итак, я сделал это:

  1. npm установить mongodb-g
  2. cd / path/to/my/app / folder
  3. npm link mongodb

с этим на месте, я мог бы сделать это в моем файле приложения: require ('mongodb').

вот некоторые ссылки, в случае, если вам нужно они:

эта проблема была бы вызвана одной из приведенных ниже причин.

1)Вы не установили модуль mongodb.

2) Вы установили MongoDB в глобальном контексте, но не связаны с текущим приложением.

решение

1) Перейдите в верхний каталог приложения и выполните npm установить mongodb, это установит модуль mongodb, и ваш проект автоматически обнаружит он.

или

2) Выполнить npm установить mongodb-g чтобы установить модуль mongo DB глобально, а затем Ttaverse в верхний каталог приложения и ссылку с помощью команды npm link mongodb.

Полезные Ссылки

вы можете сделать любую из двух вещей, чтобы заставить его работать: -

1) установить mongodb глобально с нижеследующими шагами : -

a) npm install mongodb -g

b) перейдите в каталог приложений, где модуль.js находится, а затем запустите

npm link mongodb

объяснение: - Когда вы устанавливаете пакет глобально через npm, он загружается в глобальную папку node_module. Для меня (пользователь Mac), это под / usr/local/lib/node_modules / mongodb. Мы ссылку это в тот каталог, из которого вы пытаетесь запустить модуль.js.

2) другой подход-установить mongodb локально, а не глобально via

npm install mongodb

после выполнения любого из них вы увидите папку node_modules --> mongodb под модулем.каталог js, что означает, что mongodb был успешно установлен.

Я новичок в MongoDB. Потратив часы на установку mongodb через npm, я, наконец, получил картину. Смотрите, на самом деле есть три "mongodb", с которыми вам нужно иметь дело (я использую OSX):

1. Драйвер, используемый в NodeJS: То есть: var mongo = require('/usr/local/lib/node_modules/mongodb'). Или вы можете использовать "npm link", как упоминалось ранее, чтобы избежать длинного пути. Команда "npm install-g mongodb" устанавливает драйвер mongodb под /usr / local / lib (это то, что "г" означает). Этот парень потратил часы и часы, чтобы установить, не знаю почему, так что будьте терпеливы!

3. База данных mongodb, на которую указывает /data / db. Поэтому в разделе /data я создал символическую ссылку db, указывающую на /Users/your_user_id/Database / mongodb (или где угодно), в которой mongodb-это пустой каталог, который вы можете создать через mkdir.

У меня такая же проблема и я решаю эти шаги.

1.Перейти к вашему проекту реж.(cd ваш путь проекта)

2.Выполните эту команду в командной консоли (install npm)

3.Запустите проект (приложение node.js, например)

может быть вы пытаетесь запустить другой путь проекта.Я столкнулся с той же проблемой и получил решение, выполнив несколько шагов, приведенных ниже.

1.) Перейдите в каталог проекта с помощью command shell "путь cd /project".

2.) Теперь запустите свой проект.

enter image description here

моя проблема была в том, что когда я изначально создал свой пакет.JSON-файл, я сделал ключ "version "соответствующим значению"1.0.0". Когда я изменил это на значение версии, чтобы отразить версию, которую я хотел использовать под моим ключом "зависимости", я избавился от ошибки. Ниже приведена картина потенциального исправления. Обратите внимание, как совпадают" версия "и" mongodb "в разделе" зависимости".

решить

npm установить mongodb

изменить пакет.json = "mongodb": "^3.0.1", изменить "mongodb": "3.0.1",

TL; DR . Ниже приведено подробное объяснение шагов, которые я выполнил, чтобы получить ошибку . Чтобы найти основной вопрос, перейдите к самому низу.

Я слежу за этой книгой addyosmani - основы-основы для создания простого приложения backbone.js с сервером узлов и mongodb в качестве внутреннего интерфейса.

Теперь, согласно уроку, я создал следующее:

В корне моего проекта и выполнил npm install , по какой-то причине это не сработало.

В результате был создан следующий файл package.json, который, по моему мнению, по сути совпадает с тем, который упоминался в руководстве:

Это создало ту же структуру папок, которая упоминается в руководстве:

И затем я успешно выполнил npm install без каких-либо ошибок.

Теперь, когда я создаю простой server.js файл и попытаться выполнить его с помощью команды node server.js я получаю следующую ошибку:

( Я могу предоставить полную трассировку, если необходимо ).

Я нашел эти StackOverflow posts относительно той же ошибки, и в ответах говорится, что мне нужно снова установить mongodb, используя npm .

Я запутался, потому что в книге ничего не говорится об этом шаге.

Я довольно новичок во всем, что я упомянул здесь, кроме основы - node.js , npm , mongodb и т. Д., Поэтому я могу упустить некоторые основные понятия.

Я хотел бы знать, возможно ли использовать существующую базу данных, которую я установил ранее, вместо загрузки и повторной установки через npm .

Если нет, почему требуется установить его снова с помощью npm , в чем разница между первоначальной установкой и npm установкой .

2 ответа

Вот пример того, как использовать модуль mongodb для подключения к экземпляру mongo в node.js

MongoDB - это программное обеспечение для баз данных ; похоже на то, как MySQL является программным обеспечением. Часто ваши взаимодействия со слоем базы данных управляются какой-то абстрактной библиотекой - в данном случае, модулем узла mongoose .

Похоже, у вас есть require('mongodb') , когда вы должны иметь require('mongoose') . В результате появится модуль Mongoose , который по сути является библиотекой кода для взаимодействия с вашей базой данных MongoDB .

Похоже, вы немного запутались в терминологии. Если у вас есть какие-либо вопросы, не стесняйтесь меня ударить :)

MongoDB-это нереляционная база данных на основе документов, которая обеспечивает большую и легкую горизонтальную масштабируемость. В этой статье мы будем использовать PyMongo для подключения к базе данных MongoDB и выполнения CRUD-операций с помощью Python.

Вступление

В этом посте мы погрузимся в MongoDB как хранилище данных с точки зрения Python. С этой целью мы напишем простой сценарий, чтобы продемонстрировать, чего мы можем достичь и какие выгоды мы можем извлечь из этого.

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

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

Базы данных NoSQL

Реляционные базы данных позволяют нам хранить, получать доступ и манипулировать данными по отношению к другой части данных в базе данных. Данные хранятся в организованных таблицах со строками и столбцами с отношениями, связывающими информацию между таблицами. Для работы с этими базами данных мы используем Structured Query Language (SQL), а примеры включают MySQL и PostgreSQL .

Нереляционные базы данных хранят данные ни в реляционных, ни в табличных базах данных, как в реляционных базах данных. Они также называются базами данных NoSQL , поскольку мы не используем SQL для взаимодействия с ними.

Кроме того, базы данных NoSQL можно разделить на Key-Value stores , Graph stores , Column stores и Document Stores , под которые подпадает MongoDB.

MongoDB и когда его использовать

MongoDB-это хранилище документов и нереляционная база данных . Это позволяет нам хранить данные в коллекциях , которые состоят из документов .

В MongoDB документ представляет собой просто JSON-подобный двоичный формат сериализации , называемый a BONUS или Binary-JSON, и имеет максимальный размер 16 мегабайт. Это ограничение размера используется для обеспечения эффективного использования памяти и полосы пропускания во время передачи.

MongoDB также предоставляет спецификацию GridFS на случай, если возникнет необходимость хранить файлы размером больше установленного предела.

Будучи хранилищем данных NoSQL, MongoDB позволяет нам пользоваться преимуществами, которые дает использование нереляционной базы данных по сравнению с реляционной. Одним из преимуществ является то, что он обеспечивает высокую масштабируемость за счет эффективного горизонтального масштабирования путем сегментирования или секционирования данных и размещения их на нескольких машинах.

MongoDB также позволяет хранить большие объемы структурированных, полуструктурированных и неструктурированных данных без необходимости поддерживать отношения между ними. Будучи открытым исходным кодом, стоимость внедрения MongoDB держится на низком уровне только за счет технического обслуживания и экспертных знаний.

Как и любое другое решение, использование MongoDB имеет свои недостатки. Первый из них заключается в том, что он не поддерживает отношений между хранящимися данными. Из-за этого трудно выполнять ACID-транзакции , которые обеспечивают согласованность.

Сложность увеличивается при попытке поддержать транзакции ACID. MongoDB, как и другие хранилища данных NoSQL, не так совершенен, как реляционные базы данных, и это может затруднить поиск экспертов.

Нереляционная природа MongoDB делает его идеальным для хранения данных в конкретных ситуациях по сравнению с его реляционными аналогами. Например, сценарий, в котором MongoDB более подходит, чем реляционная база данных, когда формат данных является гибким и не имеет никаких отношений.

С гибкими/нереляционными данными нам не нужно поддерживать свойства ACID при хранении данных, в отличие от реляционных баз данных. MongoDB также позволяет нам легко масштабировать данные в новые узлы.

Однако при всех своих преимуществах MongoDB не идеален, когда наши данные реляционны по своей природе. Например, если мы храним записи клиентов и их заказы.

В этой ситуации нам понадобится реляционная база данных для поддержания отношений между нашими данными, которые важны. Он также не подходит для использования MongoDB, если нам нужно соблюдать свойства КИСЛОТЫ.

Взаимодействие с MongoDB через оболочку Mongo

Для работы с MongoDB нам нужно будет установить сервер MongoDB , который мы можем скачать с официальной домашней страницы . Для этой демонстрации мы будем использовать бесплатный сервер сообщества.

Сервер MongoDB поставляется с оболочкой Mongo Shell , которую мы можем использовать для взаимодействия с сервером через терминал.

Чтобы активировать оболочку, просто введите mongo в вашем терминале. Вас встретит информация о настройке сервера MongoDB, включая версию оболочки MongoDB и Mongo, а также URL-адрес сервера.

Например, наш сервер работает на:

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

Каждая операция, которую мы выполняем после этого, будет выполняться в нашей базе данных Series DB . В базе данных мы будем хранить коллекции, которые аналогичны таблицам в реляционных базах данных.

Например, для целей этого урока давайте добавим несколько серий в базу данных:

Нас встречают с:

Чтобы извлечь все документы, хранящиеся в нашей коллекции series , мы используем db.inventory.find (<>) , SQL-эквивалент которого равен SELECT * FROM series . Передача пустого запроса (т. е. <> ) вернет все документы:

Мы также можем запросить данные, используя условие равенства, например, чтобы вернуть все телесериалы, премьера которых состоялась в 2013 году:

Эквивалентом SQL будет SELECT * FROM series WHERE .

MongoDB также позволяет нам обновлять отдельные документы с помощью db.collection.Update One () или выполните пакетное обновление с помощью db.collection.UpdateMany() . Например, чтобы обновить год выпуска для Suits :

Наконец, для удаления документов оболочка Mongo предлагает db.collection.deleteOne() и db.collection.удалить многие функции () .

Например, удалить все серии, премьера которых состоялась в 2012 , мы бы побежали:

Более подробную информацию об операциях CRUD на MongoDB можно найти в онлайн-справочнике включая дополнительные примеры, выполнение операций с условиями, атомарность и сопоставление концепций SQL с концепциями и терминологией MongoDB.

Интеграция Python с MongoDB

С помощью Python 3.6+ и Virtualenv , установленных на наших машинах, давайте создадим виртуальную среду для нашего приложения и установим PyMongo через pip:

Использование PyMongo , мы собираемся написать простой скрипт, который мы можем выполнить для выполнения различных операций с нашей базой данных MongoDB.

Подключение к MongoDB

Во-первых, мы импортируем pymongo в наш mongo_db_script.py и создайте клиент, подключенный к локально запущенному экземпляру MongoDB:

Создание документов

Эта функция получает коллекцию и словарь данных и вставляет данные в предоставленную коллекцию. Затем функция возвращает идентификатор, который мы можем использовать для точного запроса отдельного объекта из базы данных.

Следует также отметить, что MongoDB добавляет дополнительный ключ _id к нашим документам, когда они не предоставляются, при создании данных.

Теперь давайте попробуем добавить шоу с помощью нашей функции:

Когда мы запускаем наш скрипт, _id нашего нового шоу печатается на терминале, и мы можем использовать этот идентификатор для получения шоу позже.

Мы можем предоставить значение _id вместо того, чтобы назначать его автоматически, что мы бы предоставили в словаре:

И если бы мы попытались сохранить документ с существующим _id , нас встретила бы ошибка, похожая на следующую:

Извлечение Документов

Для извлечения документов из базы данных мы будем использовать find_document() , который запрашивает нашу коллекцию для одного или нескольких документов. Наша функция получит словарь, содержащий элементы, по которым мы хотим отфильтровать, и необязательный аргумент, указывающий, хотим ли мы получить один документ или несколько документов:

А теперь давайте воспользуемся этой функцией, чтобы найти некоторые документы:

При выполнении нашей функции мы не предоставили параметр multiple , и в результате получился один документ:

Когда задан параметр multiple , результатом будет список всех документов в нашей коллекции, для которых атрибут name имеет значение FRIENDS .

Обновление документов

Наша следующая функция, update_document() , будет использоваться для обновления одного конкретного документа. Мы будем использовать _id документа и коллекции, к которой он принадлежит, при его обнаружении:

Теперь давайте вставим документ:

Сделав это, давайте обновим документ, который мы укажем с помощью _id , возвращенного при его добавлении:

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

Когда мы выполняем наш скрипт, мы видим, что наш документ был обновлен:

Удаление документов

И наконец, давайте напишем функцию для удаления документов:

Поскольку мы используем метод delete_one , за один вызов можно удалить только один документ, даже если запрос совпадает с несколькими документами.

Теперь давайте используем эту функцию для удаления записи:

Если мы попытаемся получить тот же самый документ:

Нас встречают с ожидаемым результатом:

Следующие Шаги

Мы выделили и использовали несколько методов PyMongo для взаимодействия с нашим сервером MongoDB из скрипта Python. Однако мы не использовали все методы, доступные нам через модуль.

Все доступные методы можно найти в официальной документации PyMongo и классифицируются в соответствии с подмодулями.

Мы написали простой скрипт, который выполняет элементарную функциональность CRUD в базе данных MongoDB. Хотя мы могли бы импортировать функции в более сложную кодовую базу или, например, в приложение Flask/Django, эти фреймворки уже имеют библиотеки для достижения тех же результатов. Эти библиотеки делают его проще, удобнее и помогают нам более надежно подключаться к MongoDB.

Например, с Django мы можем использовать такие библиотеки , как Django MongoDB Engine и Djongo , в то время как Flask имеет Flask-PyMongo , который помогает преодолеть разрыв между Flask и PyMongo для облегчения бесшовного подключения к базе данных MongoDB.

Вывод

MongoDB-это хранилище документов, которое относится к категории нереляционных баз данных (NoSQL). Он имеет определенные преимущества по сравнению с реляционными базами данных, а также некоторые недостатки.

Поэтому мы должны тщательно изучить ваши требования, прежде чем принимать решение об использовании MongoDB для хранения данных.

Читайте также: