Mongodb mongo和mongod之间的实际区别是什么?

Mongodb mongo和mongod之间的实际区别是什么?,mongodb,Mongodb,然而,刚安装完mongodb,我还不能完全理解mongo与mongod命令之间的区别。是的,我明白 mongod是MongoDB系统的主守护进程 那 mongo是MongoDB的交互式JavaScript shell接口 但这实际上意味着什么?我假设每次我想使用mongodb时,我都需要先运行mongod。但是,为什么我能够在没有首先启动mongod的情况下运行mongo?mongo是否在后台自动运行mongod?其次,如果我运行mongod,它最终会以以下内容结束 正在等待端口27017上的连

然而,刚安装完mongodb,我还不能完全理解
mongo
mongod
命令之间的区别。是的,我明白

mongod是MongoDB系统的主守护进程

mongo是MongoDB的交互式JavaScript shell接口

但这实际上意味着什么?我假设每次我想使用mongodb时,我都需要先运行
mongod
。但是,为什么我能够在没有首先启动
mongod
的情况下运行
mongo
mongo
是否在后台自动运行
mongod
?其次,如果我运行
mongod
,它最终会以以下内容结束

正在等待端口27017上的连接

但之后我就不能再打字了。同样,我假设mongodb是在后台启动的,所以我可以安全地关闭终端。但是,如果我(在mac电脑上)错误地关闭了终端,如何在终端上恢复?另外,如何终止服务以使其停止侦听端口


如你所见,我有一大堆简单的问题。。。但大多数都与when和when not to
mongo
mongod
的实际用途有关。我似乎在网上找不到任何有助于我从实际意义上解释这些的东西。

使用
mongod
您正在启动机器上的服务器。正如您正确指出的,
mongo
是您的客户机,您的用户界面,如果您愿意的话。默认情况下,它连接到MongoDB的本地实例。如果在没有运行服务器实例的情况下启动客户端,则必须“告诉”它应该连接到哪里(例如远程实例):


与大多数数据库软件一样,Mongo分为服务器和客户端。服务器是存储和管理数据的主要数据库组件。客户端有各种风格,连接到服务器以插入或查询数据

mongod
是服务器部分。你开始它,它运行,故事结束。
mongo
是默认的命令行客户端。启动它,连接到服务器,输入命令,然后退出

您必须首先运行
mongod
,否则您将无法与数据库进行交互。只需在命令行上运行
mongod
,它将成为最前端的运行应用程序,并且它不提供任何交互性。所以,是的,你只会看到像“等待连接…”之类的东西,没有别的。您通常不会像在命令行上那样运行
mongod
。您通常会创建一个init.d脚本或启动文件,或者以任何方式管理守护进程,并让系统在系统启动时自动启动它

如果您想一次性启动
mongod
,而不让它在您的系统上永久运行,请将其置于后台:

$ mongod &
&
将其置于后台,您可以继续使用命令行。你可以看到它,然后像这样杀死它:

~ deceze$ mongod &
[1] 1065
~ deceze$ jobs
[1]+  Running                 mongod &
~ deceze$ kill %1
[1]+  Done                    mongod
服务器运行后,启动
mongo
,连接到服务器并与之交互。如果您试图在没有运行服务器的情况下运行
mongo
,它会抱怨无法连接:

~ deceze$ mongo
MongoDB shell version: 3.0.2
connecting to: test
2015-08-13T09:36:13.518+0200 W NETWORK  Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused
2015-08-13T09:36:13.521+0200 E QUERY    Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
    at connect (src/mongo/shell/mongo.js:179:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed

如果您的
mongo
shell确实连接到某个东西,您可能会在不知不觉中在您的系统上运行另一个
mongod
实例。

我没有安装mongod,只是:brew安装mongodb,然后:brew服务启动mongodb,让它永久运行running@deceze这个的conf文件在哪里?当我编辑mongodb.conf或monbod.conf时,在运行mongod时,没有什么显示不同