MongoDB 셸의 모든 모음을 어떻게 나열합니까?


답변:


1157

넌 할 수있어...

자바 스크립트 (쉘) :

db.getCollectionNames()

Node.js :

db.listCollections()

비 JavaScript (쉘만 해당) :

show collections

내가 비 JavaScript라고 부르는 이유는 다음과 같습니다.

$ 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"
]

그 달콤하고 달콤한 show collections결과물 을 정말로 원한다면 , 당신은 할 수 있습니다 :

$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info

좋은 기능입니다. 이름 배열을 반복하여 다른 작업을 수행 할 수 있습니다 (예 : 컬렉션에서 모든 항목 제거).
힐튼 Perantunes


6
우리가 얻을시겠습니까 db.listCollections()대답 여기에 표시된 녹색 체크로? 그렇지 않으면 사람들은이 대답에 올 때 내가 몇 번이나했던 같은 실수를하고있다 - 그리고 사용하려고 시도 db.getCollectionNames하고 오류가 돌아옵니다 db.collectionNames is not a function.
niftylettuce

22
@niftylettuce이 질문은 node.js 드라이버가 아닌 MongoDB 쉘에 관한 것입니다. db.getCollectionNames()여전히 셸에 대한 정답입니다.
JohnnyHK

424
> show collections

명령 행 도움말 ( help)에 설명 된대로 현재 선택된 DB의 모든 모음을 나열합니다 .


2
스크립트에서 show collections 출력을 사용할 수는 없지만 x = db.getCollectionNames ()를 사용하여 모든 이름의 배열을 얻을 수 있습니다.
ceteras

1
모든 수집 후에 나열된 두 숫자는 무엇을 의미합니까? 두 가지 유형의 크기? content 1145.586MB / 1506.855MB예를 들어.
Dan Dascalescu

@ Dan : MongoDB를 한동안 사용하지는 않았지만 가장 좋은 추측은 컬렉션에 저장된 데이터의 크기와 해당 컬렉션에 할당 된 총량 (지속적으로 재 할당하지 않고 사소한 업데이트 및 성장을 처리하는 것)입니다 전체 컬렉션 내용을위한 새로운 공간).
Cameron

265

사용중인 현재 데이터베이스에 대한 모든 모음을 어떻게 나열합니까?

세 가지 방법

  • show collections
  • show tables
  • db.getCollectionNames()

모든 데이터베이스 를 나열하려면 다음을 수행하십시오 .

show dbs

주어진 데이터베이스를 입력하거나 사용하려면 :

use databasename

모두 나열하려면 컬렉션 :

show collections

산출:

collection1
collection2
system.indexes

(또는)

show tables

산출:

collection1
collection2
system.indexes

(또는)

db.getCollectionNames()

산출:

[ "collection1", "collection2", "system.indexes" ]

주어진 컬렉션에 들어가거나 사용하려면

use collectionname

1
가장 완전한 답변은 +1입니다. show tables관계형 DBMS 배경에서 온 사람들에게는 실례 가 도움이됩니다.
Jeff Puckett

9
아니, use데이터베이스를 사용하는 것입니다, 아무것도 컬렉션을 함께 할 수 없습니다
sjmeverett

1
우리는 또한 db.collections를 사용할 수 있습니다
Biplab Malakar


30

다른 사람들이 제안한 옵션 외에도 :

show collections  // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list

각 컬렉션이 어떻게 만들어 졌는지 알고 싶을 때 유용 할 수있는 또 다른 방법이 있습니다 (예 : 특정 크기의 캡이있는 컬렉션).

db.system.namespaces.find()

23

먼저 데이터베이스를 사용하여 내부의 모든 컬렉션 / 테이블을 표시해야합니다.

>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

15

당신은 사용할 수 있습니다 show tables또는 show collections.


2
@LalitKumarB : 어떻게됩니까? 다른 답변을 바탕으로 실제로 작동 할 수있는 적절한 답변입니다. 적어도 대답을 시도하는 것입니다. 그것은 이미 여러 개의 정답이 게시 된 아주 오래된 질문에 대한 답변입니다.
Roope Hakulinen

14

시험:

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

12

MongoDB 데이터베이스의 모든 콜렉션을 표시하는 데 사용되는 명령은

show collections

show collections명령을 실행하기 전에 데이터베이스를 선택해야합니다.

use mydb // mydb is the name of the database being selected

모든 데이터베이스를 보려면 다음 명령을 사용할 수 있습니다

show dbs // Shows all the database names present

자세한 내용은 시작하기를 참조하십시오 .


11

MongoDB 셸 (명령 줄)의 모든 모음을 표시하려면 셸 도우미를 사용하십시오.

show collections

현재 데이터베이스의 모든 컬렉션을 보여줍니다. 애플리케이션에서 모든 콜렉션 목록을 가져 오려면 MongoDB 데이터베이스 메소드를 사용할 수 있습니다

db.getCollectionNames()

MongoDB 쉘 헬퍼에 대한 자세한 정보는 mongo쉘 빠른 참조를 참조하십시오 .


11

mongoshell의 다음 명령이 일반적입니다.

show databases
show collections

또한,

show dbs
use mydb
db.getCollectionNames()

때로는 전체 이름 공간의 일부인 컬렉션의 인덱스뿐만 아니라 모든 컬렉션을 보는 것이 유용합니다.

그렇게하는 방법은 다음과 같습니다.

db.getCollectionNames().forEach(function(collection) {
    indexes = db[collection].getIndexes();
    print("Indexes for " + collection + ":");
    printjson(indexes);
});

세 가지 명령과이 스 니펫 사이에 잘 ​​설명되어 있습니다!


8

가장 큰 혼란 중 하나는 당신이 할 수있는 것 mongo(또는 대화 형 / 하이브리드 쉘)과 mongo --eval(또는 순수한 JavaScript 쉘) 의 차이점 입니다. 이 유용한 문서를 편리하게 유지합니다.

다음은 show명령으로 수행 할 수있는 작업을 스크립팅하는 예입니다 .

# 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')
            )
        }
    )
"

참고 : 그것은 실제로 하나의 라이너로 잘 작동합니다. (그러나 스택 오버플로에서는 끔찍한 것처럼 보입니다.)

mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"

이것은 매우 유용합니다.
Marco Craveiro

4

> = 2.x에서는 할 수 있습니다

db.listCollections()

1.x에서는 할 수 있습니다

db.getCollectionNames()

1
@JohnnyHK과 같이 지적 이에만 적용 노드 드라이버 가 아닌 몽고 쉘 OP 질문 당
제프 퍼켓

@JeffPuckettII Node를 사용하지 않습니다. 이것은 mongo shell 내에서 완벽하게 작동합니다. 왜 그런지 궁금해?
Aniruddh Joshi

1
MongoDB 셸 버전 3.2.6을 실행 중이며 실행 하면 사용자 모음이 있으므로 db.getCollectionNames()얻을 [ "users" ]수 있습니다. 내가 시도 db.listCollections()하면 결과는 다음과 같습니다[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Jeff Puckett

3

mongo쉘 에서 모든 콜렉션을 나열하십시오 .

  • db.getCollectionNames ()
  • 컬렉션 표시
  • 테이블 표시

참고 : 컬렉션은 당신이에 현재 데이터베이스에서 보여줍니다 현재


이전 답변과 어떻게 다릅니 까?
Peter Mortensen

3

데이터베이스로 전환합니다.

으로:

{your_database_name} 예를 사용하십시오 .

use friends

where friends는 데이터베이스의 이름입니다.

그런 다음 다음을 작성하십시오.

db.getCollectionNames()
show collections

컬렉션 이름을 알려줍니다.


이전 답변과 어떻게 다릅니 까?
Peter Mortensen

2
> show dbs        
anuradhfirst  0.000GB
local         0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
  • 를 사용하여 MongoDB 데이터베이스와 연결하십시오 mongo. 연결이 시작됩니다.
  • 그런 다음 show dbs명령 을 실행하십시오 . 모든 종료 / 사용 가능한 데이터베이스가 표시됩니다.
  • 그런 다음 원하는 것을 선택하십시오 database. 위의 내용은 anuradhfirst입니다. 그런 다음를 실행하십시오 use anuradhfirst. 원하는 데이터베이스로 전환됩니다.
  • 그런 다음 show collections명령 을 실행하십시오 . collections선택한 데이터베이스 내부의 모든 내용이 표시 됩니다.

1

컬렉션 표시

이 명령은 일반적으로 데이터베이스로 전환 한 후 MongoDB 쉘에서 작동합니다.


1

WiredTiger 스토리지 엔진을 사용하는 MongoDB 3.0 배치의 경우 db.getCollectionNames()3.0 이전 버전의 mongo 쉘 또는 3.0 호환 버전 이전의 드라이버 버전에서 실행 db.getCollectionNames()하면 기존 콜렉션이 있어도 데이터가 리턴되지 않습니다.

자세한 내용을 참조하시기 바랍니다 .



0
show collections

또는

show tables

또는

db.getCollectionNames();

이전 답변과 어떻게 다릅니 까?
Peter Mortensen

내 계정을 개선하는 것 외에는 아무것도 없습니다.
nixxo_raa

0

내가 사용 listCollections이 목적을 위해 (지원 MongoDB를 3.0 및 최대).

예:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });

컬렉션의 인덱스와 같은 추가 정보를 가져 오려면 :

db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });

컬렉션 이름 만 인쇄하려면

db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})

이것이 더 많은 유연성을 제공한다고 생각합니다.

더 읽기 : listCollections


0
 1. show collections; // Display all collections
 2. show tables     // Display all collections
 3. db.getCollectionNames();   // Return array of collection. Example :[ "orders", "system.profile" ]

모든 컬렉션에 대한 자세한 정보 :

db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
  • 필요한 액세스 권한이있는 사용자 (데이터베이스에 대해 listCollections 조치를 부여하는 권한)의 경우이 메소드는 데이터베이스에 대한 모든 콜렉션의 이름을 나열합니다.
  • 필요한 액세스 권한이없는 사용자의 경우이 방법은 사용자에게 권한이있는 모음 만 나열합니다. 예를 들어, 사용자가 데이터베이스의 특정 컬렉션을 찾은 경우이 메서드는 해당 컬렉션 만 반환합니다.

검색 문자열을 기반으로 컬렉션 목록을 나열합니다.

db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })

예 : 이름에 "import"가있는 모든 컬렉션을 찾습니다

db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })

filter
Parveen

@Praveen-귀하의 사례에 대한 답변을 포함하도록 답변을 업데이트했습니다. 도움이
되길 바랍니다

고마워요 내 스크립트를 작성했습니다. ts_1 ");}});
Parveen

-1

mongo쉘 에서 다음 명령을 사용하십시오 .

show collections

당신이 명령을 백틱에 넣었다면, 당신의 -1에 반대 투표하십시오.
blamb

이전 답변과 어떻게 다릅니 까?
피터 모텐슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.