Bagaimana saya bisa tahu di mana mongoDB menyimpan data? (tidak dalam default / data / db!)

160

Tuan rumah saya datang dengan contoh mongodb dan tidak ada direktori / db jadi sekarang saya bertanya-tanya apa yang bisa saya lakukan untuk mencari tahu di mana data sebenarnya disimpan.

Zugwalt
sumber
7
Ada pertanyaan yang lebih baru tentang ini yang memiliki jawaban yang lebih baik: "Apa jalur database default untuk mongodb?" . Jalur data akan menjadi default /data/db(jika tidak ada file config sedang digunakan) atau dapat ditemukan via db.adminCommand("getCmdLineOpts").parsed.dbpath.
Stennie
6
pada OSX, mongo 3.0.4, saya harus menggunakan "db.adminCommand (" getCmdLineOpts "). parsed.storage.dbPath"
ski_squaw
@Stennie komentar Anda membantu saya (saya di Windows jadi saya menggunakan Robomongo), tetapi tautan pertanyaan Anda menunjukkan pertanyaan ini, bukan pada target yang Anda maksud - stackoverflow.com/a/12738557/112764 - dan di 3.x, sebenarnyadb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ
5
@NateJ Terima kasih! The jawaban pada pertanyaan terkait memiliki contoh untuk MongoDB 2.6+ serta bentuk tua di <= 2.4. Ada juga shell helper yang dapat Anda gunakan alih-alih mengingat untuk mengubah ke admindatabase atau menggunakan adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+).
Stennie

Jawaban:

140

mongoddefault lokasi database ke /data/db/.

Jika Anda menjalankan ps -xa | grep mongoddan Anda tidak melihat --dbpathyang secara eksplisit memberi tahu mongoduntuk melihat parameter untuk lokasi db dan Anda tidak memiliki dbpathdi Anda mongodb.conf, maka lokasi default akan: /data/db/dan Anda harus melihat di sana.

EhevuTov
sumber
11
Tidak ada direktori tersebut
user2384994
18
@ user2384994 milikku berada di/etc/mongod.conf
K - Keracunan dalam SO semakin meningkat.
1
Tidak melihat jalan, tetapi /usr/bin/mongod -f /etc/mongod.conf. Mengambil dbpatch dari konfigurasi.
Putnik
6
Periksa /usr/local/etc/mongod.conf(file konfigurasi) dan /usr/local/var/mongodb(lokasi basis data) juga. Pada beberapa sistem, ini akan menjadi default.
Miles Erickson
Nah yang ini HARUS mencetak jalur saat ini tepatnya untuk semua versi mongodb stackoverflow.com/a/52036070/248616
Nam G VU
57

Apa yang dikatakan file konfigurasi Anda?

$ grep dbpath /etc/mongodb.conf

Jika tidak benar, coba ini, file database Anda akan ada pada daftar:

$ sudo lsof -p `ps aux | grep mongodb | head -n1 | tr -s ' ' | cut -d' ' -f 2` | grep REG

Ini /var/lib/mongodb/*pada instalasi default saya (Ubuntu 11.04).

Perhatikan bahwa ada juga /var/lib/mongodb/mongod.lockfile yang menyimpan mongodPID untuk kenyamanan, namun ia terletak di direktori data - yang kami cari ...

Tomasz Nurkiewicz
sumber
Tidak ada direktori / var / lib di server ini dan kedua perintah itu tidak berfungsi (yang pertama tidak dapat menemukan /etc/mongodb.conf yang kedua tidak dikenal lsof)
Zugwalt
Mungkin Anda harus menambahkan info untuk host Anda. Sepertinya bukan distro seperti Ubuntu.
DrColossos
4
Di Ubuntu 16.04 mongodb v3.4.10, itu adalah$ grep dbPath /etc/mongod.conf
ihsan
31

Dalam versi yang lebih baru dari mongodb v2.6.4 coba:

grep dbpath /etc/mongod.conf

Ini akan memberi Anda sesuatu seperti ini:

dbpath=/var/lib/mongodb

Dan di situlah ia menyimpan data.

Mwirabua Tim
sumber
Milik saya di sini juga. Untuk orang-orang yang ingin menemukan direktori ini untuk memeriksa ukuran file:du -sh * | sort -hr
26

saya menemukan db.serverCmdLineOpts() cara paling kuat untuk menemukan jalur yang sebenarnya jika Anda dapat terhubung ke server. "Parsed.storage.dbPath" berisi path yang saat ini digunakan oleh server Anda dan tersedia baik saat diambil dari konfigurasi atau dari argumen baris perintah.

Juga dalam kasus saya, penting untuk memastikan bahwa nilai konfigurasi mencerminkan nilai aktual (yaitu konfigurasi tidak berubah setelah restart terakhir), yang tidak dijamin oleh solusi yang ditawarkan di sini.

db.serverCmdLineOpts()

Contoh output:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}
glock18
sumber
3
Ini adalah jawaban terbaik di sini
Pengawas
Jawaban terbaik untuk saya juga
Nam G VU
Bekerja seperti pesona! Terima kasih dan ini harus dibatalkan :)
Bryan Jacob
21

Sementara pertanyaan ini ditargetkan untuk instance Linux / Unix dari Mongo, ini adalah salah satu hasil pencarian pertama terlepas dari sistem operasi yang digunakan, jadi untuk pengguna Windows masa depan yang menemukan ini:

Jika MongoDB diatur sebagai Layanan Windows dengan cara default, Anda biasanya dapat menemukannya dengan melihat entri 'Path to executable' di Properti Layanan MongoDB:

Jendela Properties memperlihatkan opsi 'Path to Executable'

Robotnik
sumber
Tidak begitu jelas, tetapi pertanyaannya adalah untuk * nix os
st78
3
@ st78 Saya tahu, tapi ini masih salah satu hasil Google pertama ketika mencari lokasi di Windows, itulah sebabnya saya meninggalkan jawaban yang membahas jalur Windows (setelah saya menemukan jawabannya) untuk orang-orang seperti saya yang sengaja menemukannya.
Robotnik
15

Dari pengalaman saya, lokasi default adalah /var/lib/mongodbsetelah saya melakukannya

sudo apt-get install -y mongodb-org
zillabunny
sumber
1
Saya dapat mengkonfirmasi ini untuk pengguna Linux Mint 17.3.
Matheus Dal'Pizzol
8

Saya menemukan milik saya di sini di sistem OSX / usr / local / var / mongodb

Achim Koellner
sumber
3
Ini berlaku untuk pengguna Homebrew
Matius
1
Pertanyaannya adalah "Bagaimana saya bisa menemukan" lokasi penyimpanan data mongodb. bukan hanya jalur untuk pengguna atau platform tertentu.
Yu Chen
4

Untuk windows Masuk ke dalam folder MongoDB \ Server \ 4.0 \ bin dan buka file mongod.cfg dalam editor teks apa pun. Kemudian cari baris yang menentukan param dbPath. Garisnya terlihat mirip

dbPath: D: \ Program Files \ MongoDB \ Server \ 4.0 \ data

Dibyendu Mitra Roy
sumber
2

Menemukannya hanya dengan menyodok masuk /var/db. Terima kasih atas bantuannya - saya yakin jawaban ini berlaku untuk sistem lain (misalnya Ubuntu) dan akan membantu orang lain!

Zugwalt
sumber
2

Jika Anda entah bagaimana bisa menemukan mongod.log dan lakukan grep di atasnya

grep dbpath mongod.log

Nilai untuk dbpath adalah lokasi data untuk mongodb !! Semua yang terbaik :)

Nilotpal
sumber
2

Sebenarnya, direktori default tempat instance mongod menyimpan datanya

/data/db di Linux dan OS X,

\data\db di Windows

Jika Anda menginstal MongoDB menggunakan sistem manajemen paket , periksa/etc/mongod.conf file yang disediakan oleh paket Anda untuk melihat direktori yang ditentukan.

The storage.dbPathpengaturan yang tersedia hanya untukmongod .

Skrip init paket Linux tidak berharap storage.dbPathberubah dari default. Jika Anda menggunakan paket-paket Linux dan mengubahnya storage.dbPath, Anda harus menggunakan skrip init Anda sendiri dan menonaktifkan skrip bawaan.

Prashant Pokhriyal
sumber
1

Saat Anda memulainya, itu menunjukkan Anda. Tetapi saya tidak tahu apakah itu sesuatu yang dapat Anda lakukan atau tidak pada tuan rumah Anda. Jika Anda memiliki akses ke baris perintah dan dapat memulai kembali layanan, Anda akan mendapatkan sesuatu seperti:

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