mongo和mongod之间有哪些实际区别?

5
刚刚安装了mongodb,但是我还不能完全理解mongomongod命令之间的区别。我知道

mongod是MongoDB系统的主要守护进程

mongo是MongoDB的交互式JavaScript shell接口

,但实际上这意味着什么?我想每次使用MongoDB时,需要先运行mongod。但是,为什么我可以在没有启动mongod的情况下运行mongomongo是否会自动在后台运行mongod?其次,如果我运行mongod,它最终会显示“等待端口27017连接”,然后我就无法继续输入任何内容。我想这意味着MongoDB已在后台启动,所以我可以安全地关闭终端。但是如果我误关闭了终端(在Mac上),如何重新打开终端?另外,如何终止服务以停止监听端口?因此,我有许多简单的问题......但大多数与何时何时不使用mongomongod相关。我似乎找不到任何在线帮助我解释这些问题的实际意义。
2个回答

17
与大多数数据库软件一样,Mongo被分为服务器客户端。服务器是主要的数据库组件,用于存储和管理数据。客户端有各种不同的类型,连接到服务器以插入或查询数据。 mongod是服务器部分。您启动它,它运行,结束故事。mongo是默认的命令行客户端。您启动它,连接到服务器,输入命令,退出它。
您必须先运行mongod,否则您没有数据库可交互。简单地在命令行上运行mongod将使其成为最前面运行的应用程序,并且它不提供任何交互性。因此,您只会看到类似“等待连接…”这样的内容,没有其他的了。通常情况下,您不会在命令行上像那样运行mongod。您最常见的做法是创建一个init.d脚本或launchd文件,或者以任何方式管理您的守护程序,并让系统在系统启动时自动启动它。
如果您想将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 install mongodb 安装了mongodb,并使用 brew services start mongodb 命令来永久运行它。 - stackdave
@deceze 这个的配置文件在哪里?当我编辑mongodb.conf或monbod.conf时,运行mongod时没有任何不同的显示。 - Christian Matthew

0

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

http://docs.mongodb.org/manual/reference/program/mongo/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接