我如何知道mongoDB存储数据的位置?(它不在默认的/data/db中!)

我如何知道mongoDB存储数据的位置?(它不在默认的/data/db中!),mongodb,directory,database,Mongodb,Directory,Database,我的主机附带了一个mongodb实例,并且没有/db目录,所以现在我想知道我能做些什么来找出数据实际存储的位置。您的配置文件怎么说 $ grep dbpath /etc/mongodb.conf 如果不正确,请尝试此操作,您的数据库文件将出现在列表中: $ sudo lsof -p `ps aux | grep mongodb | head -n1 | tr -s ' ' | cut -d' ' -f 2` | grep REG 在我的默认安装(Ubuntu 11.04)中是/var/lib

我的主机附带了一个mongodb实例,并且没有/db目录,所以现在我想知道我能做些什么来找出数据实际存储的位置。

您的配置文件怎么说

$ grep dbpath /etc/mongodb.conf
如果不正确,请尝试此操作,您的数据库文件将出现在列表中:

$ sudo lsof -p `ps aux | grep mongodb | head -n1 | tr -s ' ' | cut -d' ' -f 2` | grep REG
在我的默认安装(Ubuntu 11.04)中是
/var/lib/mongodb/*


请注意,为了方便起见,还有一个
/var/lib/mongodb/mongod.lock
文件保存
mongod
PID,但是它位于数据目录中,我们正在查找该目录…

mongod
默认数据库位置为
/data/db/


如果运行
ps-xa | grep mongod
,但没有看到一个
--dbpath
,它明确告诉
mongod
查看数据库位置的参数,而
mongodb.conf
中没有
dbpath
,然后默认位置将是:
/data/db/
,您应该在那里查找。

只需在
/var/db
中拨动一下就可以找到它。谢谢你的帮助——我相信这些答案适用于其他系统(如Ubuntu),也会帮助其他系统

在较新版本的mongodb v2.6.4中,请尝试:

grep dbpath /etc/mongod.conf
它会给你这样的东西:

dbpath=/var/lib/mongodb

这就是它存储数据的地方。

根据我的经验,默认位置是
/var/lib/mongodb

sudo apt-get install -y mongodb-org

我在OSX系统上找到了我的
/usr/local/var/mongodb

虽然此问题针对的是Mongo的Linux/Unix实例,但无论使用何种操作系统,它都是最早的搜索结果之一,因此对于找到此问题的未来Windows用户:

如果以默认方式将MongoDB设置为Windows服务,您通常可以通过查看MongoDB服务属性中的“可执行文件路径”条目找到它:


当您启动它时,它会显示您。但我不知道你是否可以在你的主机上做些什么。如果您有权访问命令行并可以重新启动服务,您将得到如下结果:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 

实际上,mongod实例存储其数据的默认目录是

/data/db
在Linux和OS X上

Windows上的
\data\db

要进行检查,可以在中查找dbPath设置

  • 在Linux上,如果您使用包管理器安装MongoDB,则位置为
    /etc/mongod.conf
    。 运行以下命令以检查指定的目录:
    grep dbpath /etc/mongodb.conf
    
  • 在Windows上,位置是
    /bin/mongod.cfg
    。打开mongod.cfg文件并检查dbPath选项
  • 在macOS上,从MongoDB的官方自制水龙头安装时,位置是
    /usr/local/etc/mongod.conf

package manager安装附带的默认mongod.conf配置文件使用以下特定于平台的默认值:

配置文件中的设置仅适用于

Linux包初始化脚本不希望
storage.dbPath
更改默认值。如果使用Linux软件包并更改
storage.dbPath
,则必须使用自己的init脚本并禁用内置脚本


如果您能找到mongod.log,并对其进行grep

grep dbpath mongod.log
dbpath的值是mongodb的数据位置!!
祝您一切顺利:)

如果您可以连接到服务器,我发现
db.serverCmdLineOpts()
是查找实际路径的最可靠的方法。“parsed.storage.dbPath”包含服务器当前使用的路径,并且在从配置或命令行参数获取该路径时都可用

同样在我的例子中,确保配置值反映实际值(即配置在上次重启后没有改变)也很重要,这里提供的解决方案不能保证这一点

db.serverCmdLineOpts()
示例输出:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}

对于windows,进入MongoDB\Server\4.0\bin文件夹并在任何文本编辑器中打开mongod.cfg文件。然后找到指定dbPath参数的行。这条线看起来很像

数据库路径:D:\Program Files\MongoDB\Server\4.0\data


在MongoDB 4.4+和CentOS 8上,我通过运行以下命令找到了路径:

grep dbPath /etc/mongod.conf

此服务器上没有/var/lib目录,并且这两个命令不起作用(第一个命令找不到/etc/mongodb.conf,第二个命令无法识别lsof),也许您应该为主机添加信息。看起来不像是一个类似Ubuntu的发行版。在Ubuntu 16.04 mongodb v3.4.10上,它是
$grep dbPath/etc/mongod.conf
最近有一个关于这个问题的问题有一个更好的答案:。数据路径要么是默认的
/data/db
(如果没有使用配置文件),要么可以通过
db.adminCommand(“getCmdLineOpts”).parsed.dbpath
发现。在OSX上,mongo 3.0.4,我不得不使用“db.adminCommand(“getCmdLineOpts”).parsed.storage.dbpath@Stennie您的评论帮助了我(我在Windows上,所以我使用的是Robomongo),但是您的问题链接指向这个问题,而不是您预期的目标--3.x中,它实际上是
db.adminCommand(“getCmdLineOpts”).parsed.storage.dbpath
@NateJ谢谢!MongoDB 2.6+的示例以及@user2384994 mine中较旧的表单位于
/etc/mongod.conf
没有看到路径,但是
/usr/bin/mongod-f/etc/mongod.conf
。从config.Check
/usr/local/etc/mongod.conf
(配置文件)和
/usr/local/var/mongodb
(数据库位置)获取dbpatch。在某些系统上,这些将是默认值。这个应该精确打印所有mongodb版本的当前路径,即
db.serverCmdLineOpts()
我的也在这里。对于希望查找此目录以检查文件大小的人:
du-sh*| sort-hr
我可以为LinuxMint17.3用户确认这一点。不是这样的
grep dbPath /etc/mongod.conf