Я только что столкнулся с той же проблемой на моем компьютере с Windows 7. Я следовал инструкциям в документации MongoDB для установки, но он не позволил мне выполнить «net start MongoDB», если я не был в «C: \». Я не хотел возвращаться и переустанавливать MongoDB, чтобы следовать инструкциям, включенным в ссылку Webiyo , указанную выше. Если вы уже установили MongoDB в соответствии с их документами и хотите иметь возможность запускать «net start MongoDB» из любой папки вашего проекта:
Перейдите в раздел HKEY_LOCAL_MACHINE> SYSTEM> CurrentControlSet> services> MongoDB
Дважды щелкните ImagePath под столбцом Имя
Вставьте следующую ImagePath (измените каталог и имена папок в соответствии с вашими потребностями):
C:\mongodb\bin\mongod.exe --service --rest --master --logpath=C:\mongodb\log\mongolog.txt --dbpath=C:\mongodb\data\db --config C:\mongodb\mongod.cfg
Обратите внимание: если вы копируете это значение ImagePath напрямую, а ваша папка «data» находится в каталоге mongodb вместо C: \, добавьте следующую строку в ваш файл «mongod.cfg»: dbpath=C:\mongodb\data\db
После того, как я сделал это, при запуске «net stop MongoDB» я получил сообщение «Произошла системная ошибка 109. Канал завершен». Вы можете видеть это также. Это сообщение было подробно обсуждено на jira.mongodb.org .
Чтобы сэкономить ваше время на чтение всей дискуссии, пост Тэда Маршалла подытоживает эту проблему:
"... в 2.1.0 он работал нормально; более поздние изменения сломали его снова. Но да, вы получаете это сообщение об ошибке в текущем коде.
Объяснение состоит в том, что mongod.exe выходит из потока обратного вызова, созданного диспетчером управления службами Windows, когда он вызывает нас из-за «net stop mongodb», и это нарушает канал RPC, который использовался для создания потока обратного вызова. Нам нужно реорганизовать логику выхода, чтобы избежать этого.
Сообщение об ошибке - единственный реальный эффект этой проблемы; мы завершаем работу по команде, чисто и сообщаем диспетчеру управления службами Windows, что мы остановлены, но затем команда «net» отображает сообщение об ошибке, потому что мы не вернулись из вызова RPC так, как мы ожидали. "