명령 행에서 MongoDB 데이터베이스를 삭제하는 방법


답변:


1084

이처럼 :

mongo <dbname> --eval "db.dropDatabase()"

명령 행에서 쉘 스크립팅에 대한 자세한 정보는 https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting


이것은 내 경우에 매우 도움이되었습니다. 어쨌든 이전 설치에서 "mean-dev"라는 데이터베이스를 가지고 있고 mongo 쉘에 "mean-dev.dropDatabase ()"를 입력하면 "ReferenceError : mean is not defined"가 발생했습니다. 그러나이 답변에 솔루션을 사용하여 트릭을 수행했습니다. +1
KP MacGregor 1

22
당신은 사람이 읽을 수있는 결과를 얻고 싶은 경우에,이 방법을 수행 mongo <dbname> --eval "printjson(db.dropDatabase())"
드미트로 Uhnichenko

1
KP MacGregor. "mean-dev 사용"+ "db.dropDatabase ()"
ozma

감사. 호스트 및 포트를 사용자 정의 할 수있는 방법은 다음과 같습니다. mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Clemens

844

이를 수행하는 가장 좋은 방법은 mongodb 콘솔에서 수행하는 것입니다.

> use mydb; 
> db.dropDatabase();

또는 mongod데이터 디렉토리에서 데이터 파일을 중지 하고 삭제 한 다음 다시 시작할 수 있습니다.

힌트 : 데이터 파일을 하위 폴더로 이동하고 더 이상 필요하지 않은 경우 삭제할 수 있습니다.


2
나는 그가 프롬프트에서 직접 의미하는 것이 아니라고 생각합니까? 이 경우 해당 명령으로 .js 파일을 생성하고 "mongo dropdb.js"를 사용하여 프롬프트에서 파일을 호출하거나 파일을 수동으로 말하거나 제거해야합니다.
Remon van Vliet 2012 년

2
use.js 파일에서 명령을 사용할 수 없다는 점에 유의하십시오. 구체적인 DB에 연결해야합니다 (
mongo

46
전문가 팁 : 데이터베이스를 삭제 한 후 mongo 셸을 종료하고 ~/.dbshell파일을 삭제하여 명령 기록을 지울 수 있습니다. (이를 수행하는 더 좋은 방법이있을 수 있습니다-확실하지 않습니다.) SQL과 달리 데이터베이스를 삭제하는 mongo 명령 은 실제로 삭제할 데이터베이스 의 이름을 참조하지 않으므로 삭제합니다. 클라이언트가 현재 연결된 데이터베이스. 명령 기록을 지우면 실수로 dropDatabase명령을 재생 하고 실수로 두 번째 데이터베이스를 삭제하지 못하게됩니다.
Chris Allen Lane

3
현명한 아이디어입니다, @ chrisallenlane. mongodb 포탄은 때때로 꽤 위험한 도구입니다 ... :)
mnemosyn

경고 : 데이터베이스를 삭제하고 동일한 이름으로 새 데이터베이스를 작성하는 경우, 모든 mongos 인스턴스를 다시 시작하거나 해당 데이터베이스를 읽거나 쓰기 전에 모든 mongos 인스턴스에서 flushRouterConfig 명령을 사용해야합니다. 이 조치는 mongos 인스턴스가 새 데이터베이스의 기본 샤드 위치를 포함하여 메타 데이터 캐시를 새로 고치도록합니다. 그렇지 않으면, 몽고는 읽은 데이터를 놓치고 잘못된 샤드에 데이터를 쓸 수 있습니다.
Lekr0

114

나는 이것을 기억하기 쉽다는 것을 알았다.

mongo //to start the mongodb shell

show dbs //to list existing databases

use <dbname> //the <dbname> is the database you'd like to drop

db //should show <dbname> just to be sure I'm working with the right database

db.dropDatabase() //will delete the database & return { "dropped" : "<dbname>", "ok" : 1 }

113

heredocs 또는 eval이 필요하지 않으며 , mongo그 자체가 통역사 역할을 할 수 있습니다.

#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();

파일을 실행 가능하게 만들고 실행하십시오.


3
스크립트 이름은으로 끝나야합니다 .js. 그렇지 않으면 db 주소로 해석됩니다.
Vegard

1
@Vegard 맞지 않다. mongo filename불필요하게 실행 중입니다-파일에 이미 통역사가 있습니다. 그냥 파일을 실행 가능하게 만들고 실행하십시오./filename
mikemaccana

@ mikemaccana 알고 있지만 ./filename실제로 실행됩니다 /usr/bin/env mongo filename. 따라서로 filename끝나지 않으면 .pymongo는 인수를 실행할 스크립트로 인식하지 않습니다.
Vegard

"./filename을 실행하면 실제로 / usr / bin / env mongo filename이 실행됩니까?" 아니요 ps. 출력을 확인하십시오 .
mikemaccana

@mikemaccana의 출력은 ps호출 시점 또는 실행 시점에서 커널이 파일을로드하고 실행하기 위해 수행 한 작업이 ps아니라 호출 시점에 실행중인 내용 만 표시 exec합니다. 실제로 무슨 일이 일어나고 있는지 알고 싶다면 주위에 래퍼를 작성 /usr/bin/env하고 shebang 줄에서 실행 파일로 설정 한 다음로 모든 것을 시작해야 strace합니다.
kbolino

31

MongoDB 시작

데이터베이스 삭제 명령은 다음과 같습니다.

1. 먼저 삭제하려는 데이터베이스를 선택하십시오

use < database name >

2. 이것을 사용하십시오.

db.dropDatabase()

28

"heredoc"을 사용할 수도 있습니다 :

mongo localhost/db <<EOF
db.dropDatabase()
EOF

다음과 같은 결과가 출력됩니다.

mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }    
bye

더 복잡한 명령 시퀀스를 원할 경우 heredocs를 사용하여 이와 같은 작업을 수행하고 싶습니다.



18

다음은 mongo 쉘을 사용하는 mongodb에 대한 전체 삭제 작업입니다.

컬렉션에서 특정 문서삭제 하려면db.mycollection.remove( {name:"stack"} )

컬렉션의 모든 문서삭제 하려면db.mycollection.remove()

으로 삭제 모음 : db.mycollection.drop()

데이터베이스삭제하려면 : 먼저 use mydb명령 으로 해당 데이터베이스로 이동 한 다음

db.dropDatabase()

명령 프롬프트 또는 블래시에서 직접 : mongo mydb --eval "db.dropDatabase()


15

터미널에서 실행

mongo // To go to shell

show databases // To show all existing databases.

use <DATA_BASE> // To switch to the wanted database.

db.dropDatabase() // To remove the current database.

1
동일 답 이 한 달 이전에 주어졌다.
Dan Dascalescu

10

다른 터미널 창을 열고 다음 명령을 실행하십시오.

mongodb
use mydb
db.dropDatabase()

해당 작업의 출력은 다음과 같아야합니다.

MAC:FOLDER USER$ mongodb
> show databases
local      0.78125GB
mydb       0.23012GB
test       0.23012GB
> use mydb
switched to db mydb
>db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }
>

주의하시기 바랍니다 mydb따라서 데이터베이스를 다시 초기화합니다 그 시간에 모든 입력을 삽입, 사용에 아직도있다.


4

Javascript를 사용하면 drop_bad.js를 쉽게 만들 수 있습니다 스크립트를 하여 데이터베이스를 삭제할 수 있습니다.

drop_bad.js를 만듭니다 .

use bad;
db.dropDatabase();

mongo 쉘을 사용하여 스크립트를 예상하기 위해 터미널에서 1 명령을 실행하는 것보다 :

mongo < drop_bad.js

2

여러 가지 방법이 있지만 최선의 방법 (가장 효율적이고 쉬운 방법)을 사용하는 것입니다 db.dropDatabase()


2

명령 프롬프트에서 먼저 다음 명령을 사용하여 mongodb에 연결하십시오.

mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]

를 사용하여 db에 액세스 <dbname>합니다.

다음 명령을 실행하여 전체 데이터베이스를 삭제하십시오.

db.dropDatabase()

-h는 도움이되고, -d는`mongo --host [host-name] : [port : number] -u [username] -p [password] [dbname] --eval "db.dropDatabase ( ) "`
jasenmichael

2

하나의 라이너 원격으로 mongo 데이터베이스에서 모든 컬렉션 제거

note 참고 --host를 사용해야하고 (-h는 mongo 명령에 대한 도움말 임), -d는 옵션이 아니므로 암호 뒤에 db 및 명령을 선택하십시오.

mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"


0

파이썬을 사용하여 MongoDB 데이터베이스를 삭제하십시오.

import argparse

import pymongo


if __name__ == "__main__":
    """
    Drop a Database.
    """

    parser = argparse.ArgumentParser()
    parser.add_argument("--host", default='mongodb://localhost:27017',
                        help="mongodb URI [default: %(default)s]")
    parser.add_argument("--database", default=None,
                        help="database name: %(default)s]")

    args = parser.parse_args()

    client = pymongo.MongoClient(host=args.host)

    if args.database in client.list_database_names():
        client.drop_database(args.database)
        print(f"Dropped: '{args.database}'")
    else:
        print(f"Database '{args.database}' does not exist")

-1

db 는 현재 데이터베이스 이름 유형을 보여줍니다 : db.dropDatabase ();

1- ' use를 사용 하여 제거 할 데이터베이스를 선택하십시오. '키워드를 .

2- 그런 다음 db.dropDatabase () 를 입력 하십시오.


-2

mongo shell에서 다음 명령을 사용하여 db 삭제

사용하다 ; db.dropDatabase ();


이 명령은 삭제할 데이터베이스를 어떻게 지정합니까? "인증 사용자"라는 데이터베이스와 나는 시도 > use auth-users ; db.dropDatabase()하고 > use auth-users; db.dropDatabase()모두 반환[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
미스터 케네디를
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.