Trong trình bao MongoDB, làm cách nào để liệt kê tất cả các bộ sưu tập cho cơ sở dữ liệu hiện tại mà tôi đang sử dụng?
Trong trình bao MongoDB, làm cách nào để liệt kê tất cả các bộ sưu tập cho cơ sở dữ liệu hiện tại mà tôi đang sử dụng?
Câu trả lời:
Bạn có thể làm...
JavaScript (vỏ):
db.getCollectionNames()
Node.js:
db.listCollections()
Không phải JavaScript (chỉ vỏ):
show collections
Lý do tôi gọi đó không phải là JavaScript là vì:
$ 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"
]
Nếu bạn thực sự muốn sản phẩm ngọt ngào, ngọt ngào đó show collections
, bạn có thể:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
như câu trả lời hiển thị ở đây và kiểm tra màu xanh lá cây? Nếu không, mọi người cũng mắc lỗi tương tự tôi đã làm vô số lần khi họ trả lời câu hỏi này - và cố gắng sử dụng db.getCollectionNames
và lỗi lại quay trở lại db.collectionNames is not a function
.
db.getCollectionNames()
vẫn là câu trả lời đúng cho vỏ.
> show collections
sẽ liệt kê tất cả các bộ sưu tập trong DB hiện được chọn, như đã nêu trong dòng lệnh help ( help
).
content 1145.586MB / 1506.855MB
ví dụ.
Làm cách nào để liệt kê tất cả các bộ sưu tập cho cơ sở dữ liệu hiện tại mà tôi đang sử dụng?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Đầu ra:
collection1 collection2 system.indexes
(hoặc là)
show tables
Đầu ra:
collection1 collection2 system.indexes
(hoặc là)
db.getCollectionNames()
Đầu ra:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
là khá hữu ích cho những người đến từ một nền tảng dbms quan hệ.
use
là sử dụng cơ sở dữ liệu, không có gì để làm với các bộ sưu tập
> show tables
Nó cho kết quả giống như câu trả lời của Cameron.
Ngoài các tùy chọn được đề xuất bởi người khác:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
Ngoài ra còn có một cách khác có thể thực sự tiện dụng nếu bạn muốn biết cách mỗi bộ sưu tập được tạo ra (ví dụ: đó là một bộ sưu tập có giới hạn với kích thước cụ thể):
db.system.namespaces.find()
Trước tiên, bạn cần sử dụng cơ sở dữ liệu để hiển thị tất cả các bộ sưu tập / bảng bên trong nó.
>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
Bạn có thể sử dụng show tables
hoặc show collections
.
Thử:
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
Lệnh được sử dụng để hiển thị tất cả các bộ sưu tập trong cơ sở dữ liệu MongoDB là
show collections
Trước khi chạy show collections
lệnh, bạn phải chọn cơ sở dữ liệu:
use mydb // mydb is the name of the database being selected
Để xem tất cả các cơ sở dữ liệu, bạn có thể sử dụng lệnh
show dbs // Shows all the database names present
Để biết thêm thông tin, hãy truy cập xem Bắt đầu .
Nếu bạn muốn hiển thị tất cả các bộ sưu tập từ shell MongoDB (dòng lệnh), hãy sử dụng trình trợ giúp shell,
show collections
cho thấy tất cả các bộ sưu tập cho cơ sở dữ liệu hiện tại. Nếu bạn muốn nhận tất cả các danh sách bộ sưu tập từ ứng dụng của mình thì bạn có thể sử dụng phương thức cơ sở dữ liệu MongoDB
db.getCollectionNames()
Để biết thêm thông tin về trình trợ giúp shell MongoDB, bạn có thể xem mongo
Shell Quick Reference .
Các lệnh sau trên mongoshell là phổ biến.
show databases
show collections
Cũng thế,
show dbs
use mydb
db.getCollectionNames()
Đôi khi thật hữu ích khi xem tất cả các bộ sưu tập cũng như các chỉ mục trên các bộ sưu tập là một phần của không gian tên tổng thể:
Đây là cách bạn sẽ làm điều đó:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Giữa ba lệnh và đoạn trích này, bạn sẽ được bảo vệ tốt!
Tôi nghĩ một trong những nhầm lẫn lớn nhất là sự khác biệt giữa những gì bạn có thể làm với mongo
(hoặc vỏ tương tác / lai) so với mongo --eval
(hoặc vỏ JavaScript thuần túy). Tôi giữ những tài liệu hữu ích này tiện dụng:
Dưới đây là một ví dụ về kịch bản những gì bạn có thể làm với show
các lệnh:
# 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')
)
}
)
"
Lưu ý: Điều đó thực sự hoạt động tốt như một lớp lót. (Nhưng có vẻ khủng khiếp trên Stack Overflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Trên> = 2.x, bạn có thể làm
db.listCollections()
Trên 1.x bạn có thể làm
db.getCollectionNames()
db.getCollectionNames()
tôi nhận được [ "users" ]
vì tôi có bộ sưu tập người dùng. Nếu tôi thử db.listCollections()
thì kết quả là[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Liệt kê tất cả các bộ sưu tập từ mongo
shell:
- db.getCollectionNames ()
- bộ sưu tập chương trình
- hiển thị bảng
Lưu ý: Các bộ sưu tập sẽ hiển thị từ cơ sở dữ liệu hiện tại bạn đang ở đâu trong hiện
Để chuyển sang cơ sở dữ liệu.
Bởi:
sử dụng ví dụ {your_database_name} :
use friends
nơi friends
là tên của cơ sở dữ liệu của bạn.
Sau đó viết:
db.getCollectionNames()
show collections
Điều này sẽ cung cấp cho bạn tên của bộ sưu tập.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Điều này sẽ bắt đầu kết nối.show dbs
lệnh. Điều này sẽ cho bạn thấy tất cả các cơ sở dữ liệu thoát / có sẵn.database
bạn muốn Ở trên là vậy anuradhfirst
. Sau đó chạy use anuradhfirst
. Điều này sẽ chuyển sang cơ sở dữ liệu bạn muốn.show collections
lệnh. Điều này sẽ hiển thị tất cả collections
bên trong cơ sở dữ liệu đã chọn của bạn.bộ sưu tập chương trình
Lệnh này thường hoạt động trên trình bao MongoDB sau khi bạn đã chuyển sang cơ sở dữ liệu.
Đối với việc triển khai MongoDB 3.0 bằng công cụ lưu trữ WiredTiger, nếu bạn chạy
db.getCollectionNames()
từ phiên bản vỏ mongo trước 3.0 hoặc phiên bản trình điều khiển trước phiên bản tương thích 3.0,db.getCollectionNames()
sẽ không trả về dữ liệu, ngay cả khi có các bộ sưu tập hiện có.
Để biết thêm chi tiết, xin vui lòng tham khảo điều này .
show collections
hoặc là
show tables
hoặc là
db.getCollectionNames();
Tôi sử dụng listCollections
(hỗ trợ MongoDB 3.0 trở lên) cho mục đích này.
Thí dụ:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Để lấy thêm thông tin như chỉ mục của bộ sưu tập:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
Để chỉ in tên bộ sưu tập:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Tôi cảm thấy điều này cung cấp linh hoạt hơn.
Đọc thêm: listCollections
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Thông tin chi tiết cho mọi bộ sưu tập:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Để liệt kê danh sách bộ sưu tập dựa trên chuỗi tìm kiếm.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Ví dụ: Tìm tất cả các bộ sưu tập có "nhập khẩu" trong tên
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Sử dụng lệnh sau từ mongo
shell:
show collections