문서 삭제
개요
이 가이드에서는 삭제 작업을 사용하여 MongoDB 컬렉션에서 문서를 제거하는 방법에 대해 설명합니다.
샘플 데이터
이 가이드의 예시에서는 다음 Book
구조체를 books
컬렉션의 문서 모델로 사용합니다.
type Book struct { Title string Author string Length int32 }
이 가이드의 예시를 실행하려면 다음 스니펫을 사용하여 샘플 데이터를 db.books
컬렉션에 로드합니다.
coll := client.Database("db").Collection("books") docs := []interface{}{ Book{Title: "Atonement", Author: "Ian McEwan", Length: 351}, Book{Title: "My Brilliant Friend", Author: "Elena Ferrante", Length: 331}, Book{Title: "Lucy", Author: "Jamaica Kincaid", Length: 103}, Book{Title: "Outline", Author: "Rachel Cusk", Length: 258}, } result, err := coll.InsertMany(context.TODO(), docs)
각 문서에는 각 문서의 title
, author
, length
필드에 해당하는 제목, 저자 및 페이지 길이가 포함된 책에 대한 설명이 포함되어 있습니다.
팁
존재하지 않는 데이터베이스 및 collection
쓰기 작업을 수행할 때 필요한 데이터베이스 및 collection이 없는 경우 서버는 이를 암시적으로 생성합니다.
삭제 작업
삭제 작업을 사용하여 MongoDB에서 데이터를 제거합니다. 삭제 작업은 다음 메서드로 구성됩니다.
DeleteOne()
은 필터와 일치하는 첫 번째 문서를 삭제합니다.DeleteMany()
는 필터와 일치하는 모든 문서를 삭제합니다.
팁
DeleteMany()
메서드를 실행할 때 한 문서가 필터와 일치하면 DeleteOne()
메서드를 실행하는 것과 동일합니다.
매개변수
DeleteOne()
및 DeleteMany()
메서드에서는 일치시킬 문서를 지정하는 Context
유형과 non-nil
쿼리 필터를 전달해야 합니다.
둘 다 선택적으로 DeleteOptions
유형을 세 번째 매개 변수로 사용하며, 이는 삭제 작업을 구성하는 데 사용할 수 있는 옵션입니다. DeleteOptions
를 지정하지 않으면 드라이버는 각 옵션의 기본값을 사용합니다.
DeleteOptions
유형을 사용하면 다음 방법으로 옵션을 구성할 수 있습니다.
메서드 | 설명 |
---|---|
SetHint() | The index to use to scan for documents to delete. Default: nil |
SetCollation() | The type of language collation to use when sorting results. Default: nil |
반환 값
DeleteOne()
및 DeleteMany()
메서드는 DeleteResult
유형을 반환합니다. 이 유형에는 삭제된 문서 수를 나타내는 DeletedCount
속성이 포함되어 있습니다. 필터와 일치하는 문서가 없으면 문서가 삭제되지 않고 DeletedCount
는 0
이 됩니다.
예시
다음 예에서는 DeleteMany()
메서드를 사용하여 작업을 수행합니다.
length
가300
보다 큰 문서를 일치시키고 삭제합니다._id
를 인덱스로 사용하도록 메서드에 지시합니다.
filter := bson.D{{"length", bson.D{{"$gt", 300}}}} opts := options.Delete().SetHint(bson.D{{"_id", 1}}) result, err := coll.DeleteMany(context.TODO(), filter, opts) if err != nil { panic(err) } fmt.Printf("Number of documents deleted: %d\n", result.DeletedCount)
Number of documents deleted: 2
팁
앞에 설명한 예에서 DeleteMany()
대신 DeleteOne()
메서드를 사용한 경우 드라이버는 일치하는 두 문서 중 첫 번째 문서를 삭제합니다.
추가 정보
삭제 작업의 실행 가능한 예는 다음 사용 예시를 참조하세요.
언급된 작업을 수행하는 방법에 대해 자세히 알아보려면 다음 가이드를 참조하세요:
드라이버가 컨텍스트를 사용하는 방법에 대한 자세한 내용은 컨텍스트를 참조하세요.
힌트 지정에 대한 자세한 내용은 인덱스를 참조하세요.
데이터 정렬에 대해 자세히 알아보려면 데이터 정렬을 참조하세요.
API 문서
이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.