MongoDB kabuğunda, kullandığım geçerli veritabanı için tüm koleksiyonları nasıl listeleyebilirim?
MongoDB kabuğunda, kullandığım geçerli veritabanı için tüm koleksiyonları nasıl listeleyebilirim?
Yanıtlar:
Yapabilirsin...
JavaScript (kabuk):
db.getCollectionNames()
node.js:
db.listCollections()
JavaScript olmayanlar (yalnızca kabuk):
show collections
Bu JavaScript olmayan diyorum nedeni:
$ 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"
]
Gerçekten bu tatlı ve tatlı ürünü show collections
istiyorsanız, şunları yapabilirsiniz:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
Burada gösterilen ve yeşil renkte işaretlenmiş olan cevabı alabilir miyiz ? Aksi takdirde insanlar bu yanıta geldiklerinde sayısız kez yaptığım aynı hatayı yapıyorlar - ve kullanmaya çalışıyorlar db.getCollectionNames
ve hata geri geliyor db.collectionNames is not a function
.
db.getCollectionNames()
kabuk için hala doğru cevaptır.
> show collections
komut satırı yardımında ( help
) belirtildiği gibi, seçili olan DB'deki tüm koleksiyonları listeler .
content 1145.586MB / 1506.855MB
Örneğin.
Kullandığım veritabanı için tüm koleksiyonları nasıl listeleyebilirim?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Çıktı:
collection1 collection2 system.indexes
(veya)
show tables
Çıktı:
collection1 collection2 system.indexes
(veya)
db.getCollectionNames()
Çıktı:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
ilişkisel dbms kökenli gelenler için oldukça yararlıdır.
use
bir veritabanı kullanmaktır, koleksiyonları ile ilgisi yoktur
> show tables
Cameron'un cevabı ile aynı sonucu verir.
Başkaları tarafından önerilen seçeneklerin dışında:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
Koleksiyonların her birinin nasıl oluşturulduğunu bilmek istiyorsanız gerçekten kullanışlı olabilecek başka bir yol da vardır (örneğin, belirli bir boyuta sahip kapaklı bir koleksiyon):
db.system.namespaces.find()
Öncelikle içindeki tüm koleksiyonu / tabloları göstermek için bir veritabanı kullanmanız gerekir.
>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
Sen kullanabilir show tables
ya show collections
.
Deneyin:
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
MongoDB veritabanındaki tüm koleksiyonları görüntülemek için kullanılan komut
show collections
show collections
Komutu çalıştırmadan önce veritabanını seçmelisiniz:
use mydb // mydb is the name of the database being selected
Tüm veritabanlarını görmek için şu komutu kullanabilirsiniz:
show dbs // Shows all the database names present
Daha fazla bilgi için, ziyaret bkz Başlarken .
MongoDB kabuğundaki (komut satırı) tüm koleksiyonları göstermek istiyorsanız, kabuk yardımcısını kullanın,
show collections
geçerli veritabanı için tüm koleksiyonları gösterir. Tüm koleksiyon listelerini uygulamanızdan almak istiyorsanız MongoDB veritabanı yöntemini kullanabilirsiniz
db.getCollectionNames()
MongoDB kabuk yardımcısı hakkında daha fazla bilgi için mongo
Shell Hızlı Referansı'nı görebilirsiniz .
Mongoshell'de aşağıdaki komutlar yaygındır.
show databases
show collections
Ayrıca,
show dbs
use mydb
db.getCollectionNames()
Bazen tüm koleksiyonları ve koleksiyonlardaki genel ad alanının bir parçası olan dizinleri görmek yararlı olabilir:
Bunu nasıl yapacağınız aşağıda açıklanmıştır:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Üç komut ve bu snippet arasında, iyi korunmalısınız!
Bence en büyük karışıklıklardan biri mongo
(veya etkileşimli / karma kabuk) ile mongo --eval
(ya da saf bir JavaScript kabuğu) ne yapabileceğiniz arasındaki farktır . Bu yararlı belgeleri elimde tutuyorum:
show
Komutlarla başka türlü yapabilecekleriniz için komut dosyası örneği :
# 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')
)
}
)
"
Not: Bu, bir astar olarak gerçekten iyi çalışır. (Ancak Stack Overflow'da korkunç görünüyor.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
> = 2.x'te şunları yapabilirsiniz
db.listCollections()
1.x ile yapabilirsiniz
db.getCollectionNames()
db.getCollectionNames()
alıyorum [ "users" ]
ben kullanıcılar koleksiyonum var çünkü. Eğer db.listCollections()
[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Kabuktaki tüm koleksiyonları listele mongo
:
- db.getCollectionNames ()
- koleksiyonları göster
- tabloları göster
Not: Koleksiyonlar, şu anda bulunduğunuz geçerli veritabanından gösterilir
Veritabanına geçmek için.
Tarafından:
{alan_adiniz_adı} örneğini kullanın :
use friends
friends
veritabanınızın adı nerede .
Sonra yaz:
db.getCollectionNames()
show collections
Bu size koleksiyonların adını verecektir.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Bu bağlantıyı başlatacaktır.show dbs
komutu çalıştırın . Bu size tüm mevcut / mevcut veritabanlarını gösterecektir.database
istediğinizi seçin . Yukarıda anuradhfirst
. Sonra koş use anuradhfirst
. Bu, istediğiniz veritabanına geçecektir.show collections
komutu çalıştırın . Bu, collections
seçtiğiniz veritabanının içindeki tüm öğeleri gösterir .koleksiyonları göster
Bu komut, veritabanına geçtikten sonra genellikle MongoDB kabuğunda çalışır.
WiredTiger depolama motorunu kullanan MongoDB 3.0 dağıtımları için,
db.getCollectionNames()
mongo kabuğunun 3.0'dan önceki bir sürümünden veya 3.0 uyumlu sürümden önceki bir sürücü sürümünden çalıştırıyorsanız,db.getCollectionNames()
mevcut koleksiyonlar olsa bile veri döndürmez.
Daha fazla detay için bakınız bu .
show collections
veya
show tables
veya
db.getCollectionNames();
listCollections
Bu amaçla kullanıyorum (MongoDB 3.0 ve üstü).
Misal:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Koleksiyonun dizini gibi daha fazla bilgi almak için:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
Yalnızca koleksiyon adlarını yazdırmak için:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Bunun daha fazla esneklik sağladığını hissediyorum.
Daha fazla bilgi için: listCollections
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Her koleksiyon için ayrıntılı bilgi:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Bir arama dizesine dayalı koleksiyon listesini listelemek için.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Örnek: Adında "içe aktar" olan tüm koleksiyonu bulun
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Kabuktan aşağıdaki komutu kullanın mongo
:
show collections