programing

MongoDB 데이터베이스의 모든 항목 삭제

megabox 2023. 3. 5. 09:42
반응형

MongoDB 데이터베이스의 모든 항목 삭제

MongoDB 개발 중입니다.전혀 악의 없는 목적으로 데이터베이스 내의 모든 것을 날려버리고 싶을 때가 있습니다.즉, 모든 수집품이나 그 밖에 있을 수 있는 모든 것을 삭제하고 처음부터 다시 시작하고 싶을 때가 있습니다.이 작업을 수행할 수 있는 코드 한 줄이 있습니까?MongoDB 콘솔 방식과 MongoDB Ruby 드라이버 방식을 모두 제공하는 보너스 포인트입니다.

mongo 쉘:

use [database];
db.dropDatabase();

사용자를 삭제하려면:

db.dropAllUsers();

또한 명령줄에서 다음을 수행합니다.

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()장기간 라우팅되지만 테스트 케이스 사이에 데이터베이스를 삭제하기 위해 이 방법을 사용하려는 경우 결국 데이터베이스 드롭 후 인덱스 제약 조건이 적용되지 않는 문제가 발생할 수 있습니다. 「」, 「」, 「」의 어느쪽인가를 . 보다 는, 하고, 의 각 만 하면 .인덱스 또는 단순한 루트는 dropDatabase를 모두 회피하고 다음과 같은 루프 내의 각 컬렉션에서 삭제하기만 하면 됩니다.

db.getCollectionNames().forEach(
  function(collection_name) {
    db[collection_name].remove()
  }
);

이 명령어는 명령줄에서 다음 명령을 사용하여 실행하고 있었습니다.

mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
db.getCollectionNames().forEach(c=>db[c].drop())

@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 shell을 사용한 mongodb의 유용한 삭제 조작입니다.

내의 특정 하려면 , 「」를 참조해 주세요.db.mycollection.remove( {name:"stack"} )

내의 모든 하려면:db.mycollection.remove()

컬렉션을 하려면 : 특정 to음음음음음음음음음음음음음음음음음 to to to to to to 。db.mycollection.drop()

: "데이터베이스 삭제"에 의해 합니다.use mydb, 그 다음

db.dropDatabase()

모든 데이터를 한 번에 폐기해야 하는 경우: (모든 데이터베이스를 한 번에 폐기)

mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).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();
                }
             }
          );

나는 더 좋다

db.your_collection.remove({})

에 걸쳐서

db.your_collection.drop()

컬렉션이 특별한 컬렉션(예: 상한 컬렉션 또는 하나의 필드가 고유하다고 표시된 컬렉션)인 경우 드롭하면 컬렉션 자체가 지워지고 컬렉션이 다시 생성되면 일반 컬렉션이 됩니다.속성을 다시 정의해야 합니다.사용방법remove()컬렉션을 제거하거나 컬렉션 동작에 영향을 주지 않고 문서를 지웁니다.

데이터베이스를 삭제하는 가장 간단한 방법: 블로그:

> use blog
switched to db blog
> db.dropDatabase();
{ "dropped" : "blog", "ok" : 1 }

Meteor 개발자를 위한.

  1. 에서 앱을 실행하는 동안 두 번째 터미널 창을 엽니다.localhost:3000.

  2. 프로젝트의 폴더 실행에서meteor mongo.

    coolName = new Mongo.Collection('yourCollectionName');

  3. 그럼 간단하게 입력해 주세요.db.yourCollectionName.drop();

  4. 로컬 서버의 변경 내용이 자동으로 표시됩니다.

다른 모든 사람들을 위해서.

db.yourCollectionName.drop();

모든 DB를 삭제하려면 다음을 사용합니다.

for i in $(mongo --quiet --host $HOSTNAME --eval "db.getMongo().getDBNames()" | tr "," " ");

do mongo $i --host $HOSTNAME --eval "db.dropDatabase()";

done 
  1. 사용 가능한 모든 dbs show dbs 목록
  2. 필요한 DB 사용 선택
  3. 데이터베이스 db.dropDatabase() //추가 명령어를 삭제합니다.
  4. db show 컬렉션에서 사용 가능한 모든 컬렉션 나열
  5. 규격 컬렉션 db.collection.drop()을 삭제합니다.

도움이 되었으면 좋겠다

use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()

MongoDB db.drop Database() 문서에서는 2.6에서 도입된 변경을 설명합니다.

버전 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

A 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

반응형