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