W jaki sposób w liście MongoDB wyświetlić listę wszystkich kolekcji dla bieżącej bazy danych, której używam?
W jaki sposób w liście MongoDB wyświetlić listę wszystkich kolekcji dla bieżącej bazy danych, której używam?
Odpowiedzi:
Możesz to zrobić...
JavaScript (powłoka):
db.getCollectionNames()
Node.js:
db.listCollections()
Non-JavaScript (tylko powłoka):
show collections
Powodem, dla którego nazywam to nie JavaScript, jest to, że:
$ 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"
]
Jeśli naprawdę chcesz tej słodkiej, słodkiej show collections
mocy, możesz:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
jako odpowiedź pokazaną tutaj i zaznaczoną na zielono? W przeciwnym razie ludzie popełniają ten sam błąd, który popełniłem niezliczoną ilość razy, gdy dochodzą do tej odpowiedzi - i próbują użyć, db.getCollectionNames
a błąd powraca db.collectionNames is not a function
.
db.getCollectionNames()
jest nadal właściwą odpowiedzią dla powłoki.
> show collections
wyświetli listę wszystkich kolekcji w aktualnie wybranym DB, jak podano w wierszu polecenia help ( help
).
content 1145.586MB / 1506.855MB
na przykład.
Jak wyświetlić listę wszystkich kolekcji dla bieżącej bazy danych, której używam?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Wynik:
collection1 collection2 system.indexes
(lub)
show tables
Wynik:
collection1 collection2 system.indexes
(lub)
db.getCollectionNames()
Wynik:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
jest bardzo pomocne dla osób pochodzących z relacyjnych środowisk dbms.
use
to korzystać z bazy danych, nie ma to nic wspólnego ze zbiorami
> show tables
Daje taki sam wynik jak odpowiedź Camerona.
Oprócz opcji sugerowanych przez inne osoby:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
Istnieje również inny sposób, który może być naprawdę przydatny, jeśli chcesz wiedzieć, jak każda z kolekcji została utworzona (na przykład jest to kolekcja ograniczona limitem o określonym rozmiarze):
db.system.namespaces.find()
Najpierw musisz użyć bazy danych, aby wyświetlić wszystkie kolekcje / tabele w niej zawarte.
>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
Możesz użyć show tables
lub show collections
.
Próbować:
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
Komenda używana do wyświetlania wszystkich kolekcji w bazie danych MongoDB to
show collections
Przed uruchomieniem show collections
polecenia musisz wybrać bazę danych:
use mydb // mydb is the name of the database being selected
Aby wyświetlić wszystkie bazy danych, możesz użyć polecenia
show dbs // Shows all the database names present
Aby uzyskać więcej informacji, zobacz Wprowadzenie .
Jeśli chcesz pokazać wszystkie kolekcje z powłoki MongoDB (linia poleceń), użyj pomocnika powłoki,
show collections
który pokazuje wszystkie kolekcje dla bieżącej bazy danych. Jeśli chcesz pobrać wszystkie listy kolekcji ze swojej aplikacji, możesz użyć metody bazy danych MongoDB
db.getCollectionNames()
Aby uzyskać więcej informacji na temat pomocnika powłoki MongoDB, zobacz mongo
Skrócone omówienie powłoki .
Następujące polecenia w języku mongoshell są powszechne.
show databases
show collections
Również,
show dbs
use mydb
db.getCollectionNames()
Czasami warto zobaczyć wszystkie kolekcje, a także indeksy kolekcji, które są częścią ogólnej przestrzeni nazw:
Oto jak to zrobiłbyś:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Pomiędzy trzema poleceniami a tym fragmentem kodu powinieneś być dobrze zakryty!
Myślę, że jednym z największych nieporozumień jest różnica między tym, co możesz zrobić z mongo
(lub interaktywną / hybrydową powłoką) vs. mongo --eval
(lub czystą powłoką JavaScript). Trzymam pod ręką te pomocne dokumenty:
Oto przykład skryptu, który możesz zrobić za pomocą show
poleceń:
# 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')
)
}
)
"
Uwaga: To działa naprawdę dobrze jako jedna linijka. (Ale wygląda okropnie w przypadku przepełnienia stosu.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
On> = 2.x, możesz to zrobić
db.listCollections()
Na 1.x możesz to zrobić
db.getCollectionNames()
db.getCollectionNames()
, dostaję, [ "users" ]
ponieważ mam kolekcję użytkowników. Jeśli spróbuję, db.listCollections()
to skutkuje[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Wyświetl wszystkie kolekcje z mongo
powłoki:
- db.getCollectionNames ()
- pokaż kolekcje
- pokaż tabele
Uwaga: Kolekcje pokażą z bieżącej bazy danych, w której aktualnie się znajdujesz
Do przełączania do bazy danych.
Przez:
skorzystaj z przykładu {twoja_bazy_danych} :
use friends
gdzie friends
jest nazwa twojej bazy danych.
Następnie napisz:
db.getCollectionNames()
show collections
To da ci nazwę kolekcji.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. To rozpocznie połączenie.show dbs
polecenie. Spowoduje to wyświetlenie wszystkich wychodzących / dostępnych baz danych.database
. W powyższym jest anuradhfirst
. Potem biegnij use anuradhfirst
. Spowoduje to przejście do wybranej bazy danych.show collections
polecenie. Spowoduje to wyświetlenie całej collections
wybranej bazy danych.pokaż kolekcje
To polecenie zwykle działa w powłoce MongoDB po przejściu do bazy danych.
W przypadku wdrożeń MongoDB 3.0 za pomocą silnika pamięci WiredTiger, jeśli uruchomisz
db.getCollectionNames()
wersję powłoki mongo przed wersją 3.0 lub wersję sterownika wcześniejszą niż wersja zgodna z wersją 3.0,db.getCollectionNames()
nie zwróci żadnych danych, nawet jeśli istnieją już kolekcje.
Aby uzyskać więcej informacji, zapoznaj się z tym .
show collections
lub
show tables
lub
db.getCollectionNames();
Używam listCollections
(obsługuje MongoDB 3.0 i nowsze) do tego celu.
Przykład:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Aby pobrać więcej informacji, takich jak indeks kolekcji:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
Aby wydrukować tylko nazwy kolekcji:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Uważam, że zapewnia to większą elastyczność.
Czytaj więcej: listaKolekcje
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Szczegółowe informacje dla każdej kolekcji:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Aby wyświetlić listę kolekcji na podstawie ciągu wyszukiwania.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Przykład: Znajdź całą kolekcję mającą „import” w nazwie
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Użyj następującego polecenia z mongo
powłoki:
show collections