Mongodb - 运行 "mongo" 和 "mongod" 数据库的区别

82

所以,我确定我在这里缺少了一些简单的东西,但是当我像守护进程一样运行mongo(使用mongod --fork或只是mongod)时,我看到的数据库内容与我在主机上仅运行“mongo”时看到的不同。

我的唯一假设是,在仅运行shell时,数据存储在其他地方而不是/data/db,当我启动mongod时切换到/data/db。如果是这种情况,那么在运行mongod时如何访问我的数据?


2
我不太确定你的问题,但mongod是数据库服务器,mongo是客户端。所以,当你说“我看到了不同的数据库内容”时,你指的是什么? - mikezter
4个回答

132
我认为这里可能存在一些混淆。 mongod是“Mongo Daemon”,基本上它是数据库的主进程。当你启动mongod时,你基本上在说“启动MongoDB进程并在后台运行”。mongod有几个默认参数,例如将数据存储在/data/db中并在端口27017上运行。 mongo是连接到特定mongod实例的命令行 shell。当你不带参数运行mongo时,它默认连接到localhost的端口27017。如果你对一个无效的 machine:port 组合运行mongo,则会连接失败(并告诉你)。
理想情况下,在除了“玩耍”之外做任何事情时,你都应该使用命令行参数来启动mongod。同样的措施也适用于用明确的指令启动mongo shell。
根据你的描述,我认为你可能遇到了关于使用默认数据库的问题。尝试以以下方式启动mongo(其中dbname是你的数据库名称)。
./mongo localhost:27017/dbname

确认一下,如果我想快速查看或进行简单编辑,我使用Mongo... 但是在生产环境中,我会运行mongod,然后API或脚本就可以与其交互了? - SheerKahn

24

是的,这可能是对这个问题一个天真的回答,但我提出来让人们更容易理解!

Mongod:

mongod

(Mongo Daemon的缩写)是由MongoDB服务器使用的后台进程,用于完成各种任务。该进程负责管理整个MongoDB服务器任务,例如接受请求、响应用户、管理MongoDB服务器操作所需的内存要求以及其他MongoDB服务器运行所必需的事项。

TLDR; 基本上它就是MongoDB服务器

Mongo:

Mongo

另一方面,它是一个交互式JavaScript shell界面,可用于MongoDB,为系统管理员提供了强大的接口,也为开发人员直接测试查询和操作提供了一种方式。 mongo还提供了一个完全功能的JavaScript环境,可与MongoDB一起使用。

TLDR; 基本上我认为它是mongodb客户端,可以用作shell来访问运行mongod实例的MongoDB数据库服务器


4

MongoD(守护进程)。

简单来说,“Hello world”,您不会直接与Mongod通信。相反,您需要使用DB客户端

您可以找到更多类似的工具。

在您的情况下,您想要使用Mongo Shell客户端(mongo命令)。

可视化

查看“客户端”-“正在运行” 的一个很好的方法是并排打开两个终端(或更多)。

运行mongod(如果未安装和运行MongoDB服务器,则mongo命令将无法工作),然后运行mongo

enter image description here

输出(1 connection: application mongo shell enter image description here

接下来,运行一些CRUD操作并查看mongod下的消息。

如果您连接Compass客户端,同样的想法:

enter image description here

管理MongoDB进程文档(更改数据目录,端口等): https://www.mongodb.com/docs/manual/tutorial/manage-mongodb-processes/


我按照以下步骤操作,但在尝试运行 mongod 时出现错误:bash: mongod: command not found'mongod' is not recognized as an internal or external command, operable program or batch file. 1) 使用 .msi 安装程序安装 MongoDB 5.0.6,并选择 作为 Windows 服务运行,2) 在 /data/db 目录下创建目录,3) 安装 MongoDB Shell 1.3.1文档没有描述如何使用 mongod - user1063287
更新,我的问题答案在这里:https://dev59.com/UWUp5IYBdhLWcg3wx5tu#41507803。本质上,您需要将Mongo的bin文件夹添加到“Path”环境变量中。我不确定为什么安装MongoDB时默认情况下不会发生这种情况。 - user1063287

1

Mongod(Mongo守护进程)

  • 基本上是数据库的主机进程。
  • 即,当您启动mongod时,基本上是在说“启动MongoDB进程并在后台运行”
  • 简单来说,“Mongod基本上启动了服务器”
  • 也被称为MongoDB的服务器

Mongo

  • 它是用于与MongoDB Server(Mongod)交互shell客户端JS接口
  • 简单来说,“连接到Mongod的客户端”

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