MongoDB 데이터베이스에서 모든 것을 삭제하십시오
MongoDB에서 개발 중입니다. 완전히 사악하지 않은 목적으로 때로는 데이터베이스의 모든 것을 날려 버려야합니다. 즉, 모든 단일 컬렉션과 그 밖의 다른 모든 것을 삭제하고 처음부터 시작하려고합니다. 이 작업을 수행 할 수있는 단일 코드 줄이 있습니까? MongoDB 콘솔 방법과 MongoDB Ruby 드라이버 방법을 모두 제공하는 보너스 포인트.
몽고 껍질에서 :
use [database];
db.dropDatabase();
루비 코드는 매우 비슷 합니다.
또한 명령 행에서 :
mongo DATABASE_NAME --eval "db.dropDatabase();"
모든 컬렉션을 재설정해야하지만 데이터베이스 사용자를 잃고 싶지 않을 때도 같은 문제가 발생했습니다. 데이터베이스의 사용자 구성을 저장하려면 다음 코드 행을 사용하십시오.
use <whichever database>
db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
이 코드는 하나의 데이터베이스에서 모든 컬렉션 이름을 살펴보고 "system"으로 시작하지 않는 이름을 삭제합니다.
나는 db.dropDatabase()
오랫동안 경로를 따랐 지만 테스트 사례 사이에서 데이터베이스를 닦아 내기 위해 이것을 사용하려고하면 데이터베이스 삭제 후 인덱스 제약 조건에 문제가있을 수 있습니다. 결과적으로 ensureIndexes를 망칠 필요가 있거나 간단한 경로는 dropDatabase를 함께 피하고 다음과 같은 루프의 각 컬렉션에서 제거합니다.
db.getCollectionNames().forEach(
function(collection_name) {
db[collection_name].remove()
}
);
제 경우에는 다음을 사용하여 명령 줄에서 이것을 실행했습니다.
mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
@Robse와 @DanH (kudos!)의 답변을 컴파일하여 완전히 만족시키는 다음 솔루션을 얻었습니다.
db.getCollectionNames().forEach( function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db.collection_name.remove({});
});
데이터베이스에 연결하고 코드를 실행하십시오.
사용자 콜렉션을 삭제하고 시스템 콜렉션을 비워서 데이터베이스를 정리합니다.
mongo 셸을 사용하는 mongodb에 대한 전체 삭제 작업 사용
컬렉션에서 특정 문서를 삭제하려면 db.mycollection.remove( {name:"stack"} )
컬렉션의 모든 문서를 삭제하려면 db.mycollection.remove()
컬렉션을 삭제하려면 db.mycollection.drop()
데이터베이스를 삭제하려면 : 먼저 use mydb
명령 으로 해당 데이터베이스로 이동 한 다음
db.dropDatabase()
사용하다
[databaseName]
db.Drop+databaseName();
drop collection
use databaseName
db.collectionName.drop();
데이터베이스와 그 하위 컬렉션 만 삭제하려면 다음을 사용하십시오.
use <database name>;
db.dropDatabase();
mongo의 모든 데이터베이스를 삭제하려면 다음을 사용하십시오.
db.adminCommand("listDatabases").databases.forEach(function(d)
{
if(d.name!="admin" && d.name!="local" && d.name!="config")
{
db.getSiblingDB(d.name).dropDatabase();
}
}
);
한 번에 모든 것을 삭제해야하는 경우 : (모든 데이터베이스를 한 번에 삭제)
mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'
데이터베이스를 삭제하는 가장 간단한 방법은 블로그라고 말합니다.
> use blog
switched to db blog
> db.dropDatabase();
{ "dropped" : "blog", "ok" : 1 }
Meteor 개발자에게 적합합니다.
에서 앱을 실행하는 동안 두 번째 터미널 창을 엽니 다
localhost:3000
.프로젝트 폴더에서
meteor mongo
.coolName = new Mongo.Collection('yourCollectionName');
그런 다음 간단히 입력하십시오
db.yourCollectionName.drop();
로컬 서버의 변경 사항이 자동으로 표시됩니다.
다른 사람들을 위해.
db.yourCollectionName.drop();
- 사용 가능한 모든 db show dbs 나열
- 필요한 DB 사용을 선택하십시오
- 데이터베이스 삭제 db.dropDatabase () // 몇 가지 추가 명령
- db show 모음에서 사용 가능한 모든 모음을 나열합니다.
- 스펙 콜렉션을 제거하십시오. db.collection.drop ()
희망이 도움이
나는 선호한다
db.your_collection.remove({})
위에
db.your_collection.drop()
컬렉션이 특수 컬렉션 인 경우 (예 : 캡핑 된 컬렉션 또는 고유 한 것으로 표시된 하나의 필드가있는 컬렉션) 드롭하면 컬렉션 자체가 지워지고 컬렉션이 다시 만들어지면 일반 컬렉션이됩니다. 속성을 다시 정의해야합니다. 따라서 remove()
컬렉션을 제거하지 않고 컬렉션 동작에 영향을주지 않고 문서를 지우는 데 사용 하십시오.
db.getCollectionNames().forEach(c=>db[c].drop())
모든 DB를 삭제하려면 다음을 사용하십시오.
for i in $(mongo --quiet --host $HOSTNAME --eval "db.getMongo().getDBNames()" | tr "," " ");
do mongo $i --host $HOSTNAME --eval "db.dropDatabase()";
done
use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()
2.6에 도입 된 수정 사항을 설명하는 MongoDB db.dropDatabase () 문서 :
버전 2.6으로 변경 :이 명령은 현재 데이터베이스와 연관된 사용자를 삭제하지 않습니다.
MongoDB를 3.2 및 최신에서는 Mongo().getDBNames()
에서 mongo
서버에서 데이터베이스 이름의 쉘 출력됩니다 목록 :
> Mongo().getDBNames()
[ "local", "test", "test2", "test3" ]
> show dbs
local 0.000GB
test 0.000GB
test2 0.000GB
test3 0.000GB
forEach()
그런 다음 배열에 대한 루프 dropDatabase()
는 나열된 모든 데이터베이스를 삭제하기 위해 호출 할 수 있습니다. 선택적으로 삭제하지 않을 중요한 데이터베이스를 건너 뛰도록 선택할 수 있습니다. 예를 들면 다음과 같습니다.
Mongo().getDBNames().forEach(function(x) {
// Loop through all database names
if (['admin', 'config', 'local'].indexOf(x) < 0) {
// Drop if database is not admin, config, or local
Mongo().getDB(x).dropDatabase();
}
})
예제 실행 :
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
test2 0.000GB
test3 0.000GB
> Mongo().getDBNames().forEach(function(x) {
... if (['admin', 'config', 'local'].indexOf(x) < 0) {
... Mongo().getDB(x).dropDatabase();
... }
... })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
참고 URL : https://stackoverflow.com/questions/3366397/delete-everything-in-a-mongodb-database
'Programming' 카테고리의 다른 글
Map을 구현하고 삽입 순서를 유지하는 Java 클래스? (0) | 2020.02.18 |
---|---|
JavaScript를 최소화 / 압축 해제하는 도구 (0) | 2020.02.18 |
JSON.stringify와 JSON.parse의 차이점 (0) | 2020.02.18 |
Express에서 전체 URL을 얻는 방법? (0) | 2020.02.18 |
Matplotlib에서, 인수가 fig.add_subplot (111)의 의미는 무엇입니까? (0) | 2020.02.18 |