Di shell MongoDB, bagaimana cara membuat daftar semua koleksi untuk database saat ini yang saya gunakan?
Di shell MongoDB, bagaimana cara membuat daftar semua koleksi untuk database saat ini yang saya gunakan?
Jawaban:
Anda dapat melakukan...
JavaScript (shell):
db.getCollectionNames()
Node.js:
db.listCollections()
Non-JavaScript (hanya shell):
show collections
Alasan saya menyebutnya non-JavaScript adalah karena:
$ mongo prodmongo/app --eval "show collections"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
2016-10-26T19:34:34.886-0400 E QUERY [thread1] SyntaxError: missing ; before statement @(shell eval):1:5
$ mongo prodmongo/app --eval "db.getCollectionNames()"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
[
"Profiles",
"Unit_Info"
]
Jika Anda benar-benar menginginkan hasil yang manis dan manis itu show collections
, Anda dapat:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
jawaban yang ditunjukkan di sini dan check in hijau? Kalau tidak, orang membuat kesalahan yang sama yang saya lakukan berkali-kali ketika mereka sampai pada jawaban ini - dan berusaha untuk menggunakan db.getCollectionNames
dan kesalahan itu kembali db.collectionNames is not a function
.
db.getCollectionNames()
masih merupakan jawaban yang tepat untuk shell.
> show collections
akan mencantumkan semua koleksi di DB yang saat ini dipilih, sebagaimana dinyatakan dalam bantuan baris perintah ( help
).
content 1145.586MB / 1506.855MB
sebagai contoh.
Bagaimana cara mendaftar semua koleksi untuk database saat ini yang saya gunakan?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Keluaran:
collection1 collection2 system.indexes
(atau)
show tables
Keluaran:
collection1 collection2 system.indexes
(atau)
db.getCollectionNames()
Keluaran:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
sangat membantu bagi mereka yang datang dari latar belakang dbms relasional.
use
adalah menggunakan database, tidak ada hubungannya dengan koleksi
> show tables
Ini memberikan hasil yang sama dengan jawaban Cameron.
Terlepas dari opsi yang disarankan oleh orang lain:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
Ada juga cara lain yang bisa sangat berguna jika Anda ingin tahu bagaimana masing-masing koleksi dibuat (misalnya, itu adalah koleksi tertutup dengan ukuran tertentu):
db.system.namespaces.find()
Pertama, Anda perlu menggunakan database untuk menampilkan semua koleksi / tabel di dalamnya.
>show dbs
users 0.56787GB
test (empty)
>db.test.help() // this will give you all the function which can be used with this db
>use users
>show tables //will show all the collection in the db
Anda bisa menggunakan show tables
atau show collections
.
Mencoba:
help // To show all help methods
show dbs // To show all dbs
use dbname // To select your db
show collections // To show all collections in selected db
Perintah yang digunakan untuk menampilkan semua koleksi di database MongoDB adalah
show collections
Sebelum menjalankan show collections
perintah, Anda harus memilih basis data:
use mydb // mydb is the name of the database being selected
Untuk melihat semua database, Anda bisa menggunakan perintah
show dbs // Shows all the database names present
Untuk informasi lebih lanjut, kunjungi lihat Memulai .
Jika Anda ingin menampilkan semua koleksi dari shell MongoDB (baris perintah), gunakan bantuan shell,
show collections
yang menunjukkan semua koleksi untuk database saat ini. Jika Anda ingin mendapatkan semua daftar koleksi dari aplikasi Anda maka Anda dapat menggunakan metode database MongoDB
db.getCollectionNames()
Untuk informasi lebih lanjut tentang pembantu shell MongoDB, Anda dapat melihat mongo
Referensi Cepat Shell .
Perintah-perintah berikut pada mongoshell adalah umum.
show databases
show collections
Juga,
show dbs
use mydb
db.getCollectionNames()
Terkadang berguna untuk melihat semua koleksi serta indeks pada koleksi yang merupakan bagian dari keseluruhan namespace:
Begini cara Anda melakukan itu:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Antara tiga perintah dan cuplikan ini, Anda harus terlindungi dengan baik!
Saya pikir salah satu kebingungan terbesar adalah perbedaan antara apa yang dapat Anda lakukan dengan mongo
(atau shell interaktif / hybrid) vs mongo --eval
(atau shell JavaScript murni). Saya menyimpan dokumen yang bermanfaat ini:
Berikut adalah contoh skrip yang mungkin Anda lakukan dengan show
perintah:
# List all databases and the collections in them
mongo --eval "
db.getMongo().getDBNames().forEach(
function(v, i){
print(
v + '\n\t' +
db.getSiblingDB(v).getCollectionNames().join('\n\t')
)
}
)
"
Catatan: Itu berfungsi sangat baik sebagai one-liner. (Tapi itu terlihat mengerikan di Stack Overflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Pada> = 2.x, Anda dapat melakukannya
db.listCollections()
Pada 1.x Anda bisa melakukannya
db.getCollectionNames()
db.getCollectionNames()
saya dapatkan [ "users" ]
karena saya memiliki koleksi pengguna. Jika saya coba db.listCollections()
maka hasilnya[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Daftar semua koleksi dari mongo
shell:
- db.getCollectionNames ()
- tampilkan koleksi
- tampilkan tabel
Catatan: Koleksi akan ditampilkan dari basis data saat ini di mana Anda berada saat ini
Untuk beralih ke database.
Oleh:
gunakan contoh {your_database_name} :
use friends
dimana friends
nama basis data Anda.
Lalu menulis:
db.getCollectionNames()
show collections
Ini akan memberi Anda nama koleksi.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Ini akan memulai koneksi.show dbs
perintah. Ini akan menunjukkan kepada Anda semua database yang tersedia / tersedia.database
Anda inginkan. Di atas itu anuradhfirst
. Kemudian jalankan use anuradhfirst
. Ini akan beralih ke database yang Anda inginkan.show collections
perintah. Ini akan menampilkan semua bagian collections
dalam database yang Anda pilih.tampilkan koleksi
Perintah ini biasanya bekerja pada shell MongoDB setelah Anda beralih ke database.
Untuk penyebaran MongoDB 3.0 menggunakan mesin penyimpanan WiredTiger, jika Anda menjalankan
db.getCollectionNames()
dari versi mongo shell sebelum 3.0 atau versi driver sebelum versi yang kompatibel 3.0, tidakdb.getCollectionNames()
akan mengembalikan data, bahkan jika ada koleksi yang ada.
Untuk detail lebih lanjut, silakan merujuk ini .
show collections
atau
show tables
atau
db.getCollectionNames();
Saya menggunakan listCollections
(mendukung MongoDB 3.0 dan lebih tinggi) untuk tujuan ini.
Contoh:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Untuk mengambil informasi lebih lanjut seperti indeks koleksi:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
Untuk mencetak hanya nama koleksi:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Saya merasa ini memberikan lebih banyak fleksibilitas.
Baca lebih lanjut: listCollections
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Informasi terperinci untuk setiap koleksi:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Untuk daftar daftar koleksi berdasarkan string pencarian.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Contoh: Temukan semua koleksi yang memiliki "impor" pada namanya
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Gunakan perintah berikut dari mongo
shell:
show collections