MongoDB에서는 remove() 메서드를 사용해 기존 컬렉션(collection)에 있는 문서(document)를 삭제할 수 있습니다.
기본 문법
db.coll.remove(DELETION_CRITERIA)
각 요소의 의미는 다음과 같습니다.
db: 현재 사용 중인 데이터베이스
coll: 문서를 삭제하려는 컬렉션의 이름
예제
MongoDB 데이터베이스에 다음과 같은 문서들을 포함하는 students 컬렉션이 있다고 가정해 보겠습니다.
{name:"Ram", age:26, city:"Mumbai"}
{name:"Roja", age:28, city:"Hyderabad"}
{name:"Ramani", age:35, city:"Delhi"}아래 쿼리는 name 값이 Ram인 문서를 삭제합니다.
> db.test.remove({'name': 'Ram'})
WriteResult({ "nRemoved" : 1 })
> db.test.find()
{ "_id" : ObjectId("5e8700"), "name" : "Roja", "age" : 28, "city" : "Hyderabad" }
{ "_id" : ObjectId("5e4161"), "name" : "Ramani", "age" : 35, "city" : "Delhi" }
{ "_id" : ObjectId("5e8161"), "name" : "Ramani", "age" : 35, "city" : "Delhi" }Java 프로그램으로 문서 삭제하기
Java에서는 com.mongodb.client.MongoCollection 인터페이스가 제공하는 deleteOne() 메서드를 사용하여 컬렉션에서 문서를 삭제할 수 있습니다.
Java 프로그램을 통해 MongoDB의 컬렉션에서 문서를 삭제하려면 다음 단계를 따르세요.
시스템에 MongoDB가 설치되어 있는지 확인합니다.
Java 프로젝트의 pom.xml 파일에 아래 의존성(dependency)을 추가합니다.
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.2</version>
</dependency>MongoClient 클래스를 인스턴스화하여 MongoDB 클라이언트를 생성합니다.
getDatabase() 메서드를 사용해 데이터베이스에 연결합니다.
getCollection() 메서드를 사용해 문서를 삭제할 대상 컬렉션 객체를 가져옵니다.
deleteOne() 메서드를 호출하여 원하는 문서를 삭제합니다.
Java 예제 코드
앞서 언급한 것처럼 다음 문서들을 포함하는 students 컬렉션이 있다고 가정합니다.
{name:"Ram", age:26, city:"Mumbai"}
{name:"Roja", age:28, city:"Hyderabad"}
{name:"Ramani", age:35, city:"Delhi"}다음 Java 프로그램은 이 컬렉션에서 특정 문서를 삭제한 후, 남아 있는 문서들을 출력합니다.
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import java.util.Iterator;
import org.bson.Document;
import com.mongodb.MongoClient;
public class DeletingDocuments {
public static void main( String args[] ) {
// MongoDB 클라이언트 생성
MongoClient mongo = new MongoClient( "localhost" , 27017 );
// 데이터베이스 연결
MongoDatabase database = mongo.getDatabase("myDatabase");
// 컬렉션 가져오기
MongoCollection<Document> collection = database.getCollection("students");
// 문서 삭제
collection.deleteOne(Filters.eq("name", "Ram"));
System.out.println("Document deleted successfully...");
// 삭제 후 남은 문서 조회
FindIterable<Document> iterDoc = collection.find();
int i = 1;
System.out.println("Remaining documents:");
Iterator it = iterDoc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
i++;
}
}
}실행 결과
Document deleted successfully...
Remaining documents:
Document{{_id=5e871141a89ad86b7b8ad229, name=Robert, age=27, city=Vishakhapatnam}}
Document{{_id=5e871141a89ad86b7b8ad22a, name=Rhim, age=30, city=Delhi}}위 예제에서 Filters.eq() 메서드는 삭제 조건을 지정하는 데 사용됩니다. 조건에 일치하는 첫 번째 문서만 삭제하고 싶다면 deleteOne()을, 일치하는 모든 문서를 삭제하려면 deleteMany() 메서드를 사용하면 됩니다.