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

标签 mongodb

刚刚安装完 mongodb,但是,我还不能完全理解 mongomongod 命令之间的区别。是的,我明白这一点

mongod is the primary daemon process for the MongoDB system

还有那个

mongo is an interactive JavaScript shell interface to MongoDB

但这实际上意味着什么?我想每次我想使用 mongodb 时,我都需要先运行 mongod。但是,为什么我能够运行 mongo 而无需先启动 mongod 呢? mongo 会在后台自动运行 mongod 吗?其次,如果我运行 mongod 它最终会以类似

的内容结束

waiting for connections on port 27017

但在那之后我无法输入任何内容。同样,我假设 mongodb 已在后台启动,因此我可以安全地关闭终端。但是,如果我错误地关闭了终端(在 Mac 上),我怎样才能在终端上恢复它?另外,如何终止服务使其停止监听端口?

如你所见,我有一堆简单的问题......但大多数都与何时和何时不 mongomongod。我似乎无法在网上找到任何可以帮助我从实际意义上解释这些内容的内容。

最佳答案

与大多数数据库软件一样,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 实例。

关于mongodb - mongo 和 mongod 之间的实际区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31981857/

相关文章:

mongodb - 使用日期范围的pymongo查询

javascript - MERN 堆栈上的数据在哪里处理?

javascript - 如何根据子文档两个字段的值查找文档?

node.js - 如何在 Meteor 中定义嵌套数组的模式?

mongodb - 如何在 Mongo 中为每个分片定义分片范围?

javascript - spring mvc 使用 javascript 附加 inslide [[]] 多个数组值

javascript - 无法将数据插入组合数据数组

ruby-on-rails - mongoid在模型上的所有文本字段上创建文本索引

regex - 查询键中的 MongoDB 正则表达式模式或通配符

c# - 替换数组中的值