문서 메뉴
문서 홈
/
가이드 시작

몽고DB에서 데이터 삭제

이 가이드에서는 MongoDB에서 데이터를 삭제하는 방법을 알아봅니다.

소요 시간: 10분

  • MongoDB deployment에 대한 연결 문자열 입니다.

  • 클러스터에 로드된 샘플 데이터 세트입니다.

  • 설치된 MongoDB 드라이버.

1
1

다음 클래스에는 문서에 포함될 모든 필드 이름과 유형이 나열되어 있습니다.

CrudDelete.cs
1// class that maps to the fields of a document in the sample_guides.comets collection
2class Comet {
3 public ObjectId Id { get; set; }
4 public string Name { get; set; }
5 public string OfficialName { get; set; }
6 public double OrbitalPeriod { get; set; }
7 public double Radius { get; set; }
8 public double Mass { get; set; }
9}
2

C#에서는 필드를 클래스 속성에 매핑하며, 이 속성은 규칙에 따라 대문자로 표시됩니다. 그러나 카멜 대소문자 필드가 있는 데이터를 삭제해야 합니다. 드라이버가 필드를 대문자에서 카멜식 대/소문자로 자동 변환하도록 하려면 ConventionPack 을 만들고 CamelCase 에 대한 명명 규칙을 등록합니다.

CrudDelete.cs
1// instruct the driver to camelCase the fields in MongoDB
2var pack = new ConventionPack { new CamelCaseElementNameConvention() };
3ConventionRegistry.Register("elementNameConvention", pack, x => true);
3

다음 섹션은 MongoDB에 연결하기 위해 필요한 최소한의 코드를 간략하게 정리합니다. 이후 단계에서는 데이터 삭제를 위해 몇 가지를 추가합니다.

6번째 줄에서 URI 문자열을 자체 Atlas 연결 문자열로 대체합니다.

CrudDelete.cs
1using MongoDB.Bson;
2using MongoDB.Bson.Serialization.Conventions;
3using MongoDB.Driver;
4
5// Replace the uri string with your MongoDB deployment's connection string.
6var uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
7
8// instruct the driver to read the fields in camelCase
9var pack = new ConventionPack { new CamelCaseElementNameConvention() };
10ConventionRegistry.Register("elementNameConvention", pack, x => true);
11
12var client = new MongoClient(uri);
13
14// database and collection code goes here
15// delete code goes here
16// amount deleted code goes here
17
18// class that represents the fields of a document in the
19// sample_guides.comets collection
20class Comet {
21 public ObjectId Id { get; set; }
22 public string Name { get; set; }
23 public string OfficialName { get; set; }
24 public double OrbitalPeriod { get; set; }
25 public double Radius { get; set; }
26 public double Mass { get; set; }
27}

다음 섹션은 MongoDB에 연결하기 위해 필요한 최소한의 코드를 간략하게 정리합니다. 이후 단계에서는 데이터 삭제를 위해 몇 가지를 추가합니다.

15 줄에서 URI string을 자체 Atlas 연결 string로 바꿉니다.

crud-delete.go
1package main
2
3import (
4 "context"
5 "fmt"
6 "log"
7 "os"
8
9 "go.mongodb.org/mongo-driver/bson"
10 "go.mongodb.org/mongo-driver/mongo"
11 "go.mongodb.org/mongo-driver/mongo/options"
12)
13
14func main() {
15 uri := "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"
16
17 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
18 if err != nil {
19 panic(err)
20 }
21
22 defer func() {
23 if err = client.Disconnect(context.TODO()); err != nil {
24 panic(err)
25 }
26 }()
27
28 // database and colletion code goes here
29 // delete code goes here
30 // amount deleted code goes here
31}

다음 섹션은 MongoDB에 연결하기 위해 필요한 최소한의 코드를 간략하게 정리합니다. 이후 단계에서는 데이터 삭제를 위해 몇 가지를 추가합니다.

13 줄에서 URI string을 자체 Atlas 연결 string로 바꿉니다.

CrudDelete.java
1import com.mongodb.client.MongoClient;
2import com.mongodb.client.MongoClients;
3import com.mongodb.client.MongoCollection;
4import com.mongodb.client.MongoDatabase;
5import com.mongodb.client.result.DeleteResult;
6import com.mongodb.client.model.Filters;
7
8import org.bson.Document;
9import org.bson.conversions.Bson;
10
11public class CrudDelete {
12 public static void main(String[] args) {
13 String uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
14
15 try (MongoClient mongoClient = MongoClients.create(uri)) {
16 // database and collection code goes here
17 // insert code goes here
18 // amount deleted code goes here
19 }
20 }
21}

다음 섹션은 MongoDB에 연결하기 위해 필요한 최소한의 코드를 간략하게 정리합니다. 이후 단계에서는 데이터 삭제를 위해 몇 가지를 추가합니다.

5번째 줄에서 URI 문자열을 자체 Atlas 연결 문자열로 대체합니다.

crud-delete.js
1const { MongoClient } = require("mongodb");
2
3// Replace the uri string with your MongoDB deployment's connection string.
4const uri =
5 "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
6
7const client = new MongoClient(uri);
8
9async function run() {
10 try {
11 await client.connect();
12 // database and collection code goes here
13 // delete code goes here
14 // amount deleted code goes here
15 } finally {
16 // Ensures that the client will close when you finish/error
17 await client.close();
18 }
19}
20run().catch(console.dir);

다음 섹션은 MongoDB에 연결하기 위해 필요한 최소한의 코드를 간략하게 정리합니다. 이후 단계에서는 데이터 삭제를 위해 몇 가지를 추가합니다.

4번째 줄에서 URI 문자열을 자체 Atlas 연결 문자열로 대체합니다.

crud_delete.py
1from pymongo import MongoClient
2
3# Replace the uri string with your MongoDB deployment's connection string.
4uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"
5
6client = MongoClient(uri)
7
8# database and collection code goes here
9# delete code goes here
10# amount deleted code goes here
11
12# Close the connection to MongoDB when you're done.
13client.close()

mongodb+srv

PyMongo를 srv 옵션으로 설치했는지 확인합니다.

python3 -m pip install "pymongo[srv]"
2

쿼리하려는 데이터베이스 및 컬렉션으로 전환합니다. 이 경우 sample_guides 데이터베이스 및 comets 컬렉션을 사용하게 됩니다.

CrudDelete.cs
// database and collection code goes here
var db = client.GetDatabase("sample_guides");
var coll = db.GetCollection<Comet>("comets");
crud-delete.go
1// database and colletion code goes here
2db := client.Database("sample_guides")
3coll := db.Collection("comets")
CrudDelete.java
1// database and collection code goes here
2MongoDatabase db = mongoClient.getDatabase("sample_guides");
3MongoCollection<Document> coll = db.getCollection("comets");
crud-delete.js
// database and collection code goes here
const db = client.db("sample_guides");
const coll = db.collection("comets");
crud_delete.py
# database and collection code goes here
db = client.sample_guides
coll = db.comets
3

다음 예에서는 쿼리 필터를 사용하여 orbitalPeriod이(가) 5보다 크고 85보다 작은 문서를 삭제하는 방법을 보여 줍니다.

CrudDelete.cs
// delete code goes here
var result = coll.DeleteMany(x => x.OrbitalPeriod > 5 && x.OrbitalPeriod < 85);
crud-delete.go
1// delete code goes here
2filter := bson.D{
3 {"$and",
4 bson.A{
5 bson.D{{"orbitalPeriod", bson.D{{"$gt", 5}}}},
6 bson.D{{"orbitalPeriod", bson.D{{"$lt", 85}}}},
7 },
8 },
9}

MongoDB Java 드라이버에는 쿼리(및 기타 작업) 생성 프로세스를 간소화하는 빌더 가 포함되어 있습니다. 여기서는 Filters.and, Filters.ltFilters.gt 빌더를 사용하여 쿼리 문서를 구성합니다.

CrudDelete.java
1// delete code goes here
2Bson filter = Filters.and(Filters.gt("orbitalPeriod", 5), Filters.lt("orbitalPeriod", 85));
3DeleteResult result = coll.deleteMany(filter);
crud-delete.js
// delete code goes here
const doc = {
orbitalPeriod: {
$gt: 5,
$lt: 85
}
};
const result = await coll.deleteMany(doc);
crud_delete.py
# delete code goes here
doc = {
"orbitalPeriod": {
"$gt": 5,
"$lt": 85
}
}
result = coll.delete_many(doc)
4

result에는 삭제 작업에 대한 몇 가지 정보가 포함되어 있습니다. 문서를 삭제했는지 확인하려면 드라이버가 삭제한 문서의 양을 인쇄하세요.

CrudDelete.cs
// amount deleted code goes here
Console.WriteLine($"Number of documents deleted: {result.DeletedCount}");
crud-delete.go
1// amount deleted code goes here
2fmt.Printf("Number of documents deleted: %d", result.DeletedCount)
CrudDelete.java
1// amount deleted code goes here
2System.out.println("Number of documents deleted: " +result.getDeletedCount());
crud-delete.js
// amount deleted code goes here
console.log("Number of documents deleted: " + result.deletedCount);
crud_delete.py
# amount deleted code goes here
print("Number of documents deleted: ", result.deleted_count)
5

다음은 전체 코드와 샘플 출력입니다.

CrudDelete.cs
1using MongoDB.Bson;
2using MongoDB.Bson.Serialization.Conventions;
3using MongoDB.Driver;
4
5// Replace the uri string with your MongoDB deployment's connection string.
6var uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
7
8// instruct the driver to read the fields in camelCase
9var pack = new ConventionPack { new CamelCaseElementNameConvention() };
10ConventionRegistry.Register("elementNameConvention", pack, x => true);
11
12var client = new MongoClient(uri);
13
14// database and collection code goes here
15var db = client.GetDatabase("sample_guides");
16var coll = db.GetCollection<Comet>("comets");
17
18// delete code goes here
19var result = coll.DeleteMany(x => x.OrbitalPeriod > 5 && x.OrbitalPeriod < 85);
20
21// amount deleted code goes here
22Console.WriteLine($"Number of documents deleted: {result.DeletedCount}");
23
24// class that maps to the fields of a document in the sample_guides.comets collection
25class Comet
26{
27 public ObjectId Id { get; set; }
28 public string Name { get; set; }
29 public string OfficialName { get; set; }
30 public double OrbitalPeriod { get; set; }
31 public double Radius { get; set; }
32 public double Mass { get; set; }
33}
Number of documents deleted: 2
crud-delete.go
1package main
2
3import (
4 "context"
5 "fmt"
6 "log"
7 "os"
8
9 "go.mongodb.org/mongo-driver/bson"
10 "go.mongodb.org/mongo-driver/mongo"
11 "go.mongodb.org/mongo-driver/mongo/options"
12)
13
14func main() {
15 uri := "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"
16
17 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
18 if err != nil {
19 panic(err)
20 }
21
22 defer func() {
23 if err = client.Disconnect(context.TODO()); err != nil {
24 panic(err)
25 }
26 }()
27
28 // database and colletion code goes here
29 db := client.Database("sample_guides")
30 coll := db.Collection("comets")
31
32 // delete code goes here
33 filter := bson.D{
34 {"$and",
35 bson.A{
36 bson.D{{"orbitalPeriod", bson.D{{"$gt", 5}}}},
37 bson.D{{"orbitalPeriod", bson.D{{"$lt", 85}}}},
38 },
39 },
40 }
41
42 result, err := coll.DeleteMany(context.TODO(), filter)
43 if err != nil {
44 panic(err)
45 }
46
47 // amount deleted code goes here
48 fmt.Printf("Number of documents deleted: %d", result.DeletedCount)
49}
Number of documents deleted: 2
CrudDelete.java
1import com.mongodb.client.MongoClient;
2import com.mongodb.client.MongoClients;
3import com.mongodb.client.MongoCollection;
4import com.mongodb.client.MongoDatabase;
5import com.mongodb.client.result.DeleteResult;
6import com.mongodb.client.model.Filters;
7
8import org.bson.Document;
9import org.bson.conversions.Bson;
10
11public class CrudDelete {
12 public static void main(String[] args) {
13 String uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
14
15 try (MongoClient mongoClient = MongoClients.create(uri)) {
16 // database and collection code goes here
17 MongoDatabase db = mongoClient.getDatabase("sample_guides");
18 MongoCollection<Document> coll = db.getCollection("comets");
19
20 // delete code goes here
21 Bson filter = Filters.and(Filters.gt("orbitalPeriod", 5), Filters.lt("orbitalPeriod", 85));
22 DeleteResult result = coll.deleteMany(filter);
23
24 // amount deleted code goes here
25 System.out.println("Number of documents deleted: " +result.getDeletedCount());
26 }
27 }
28}
Number of documents deleted: 2
crud-delete.js
1const { MongoClient } = require("mongodb");
2
3// Replace the uri string with your MongoDB deployment's connection string.
4const uri =
5 "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
6
7const client = new MongoClient(uri);
8
9async function run() {
10 try {
11 await client.connect();
12 // database and collection code goes here
13 const db = client.db("sample_guides");
14 const coll = db.collection("comets");
15
16 // delete code goes here
17 const doc = {
18 orbitalPeriod: {
19 $gt: 5,
20 $lt: 85
21 }
22 };
23
24 const result = await coll.deleteMany(doc);
25
26 // amount deleted code goes here
27 console.log("Number of documents deleted: " + result.deletedCount);
28
29 } finally {
30 // Ensures that the client will close when you finish/error
31 await client.close();
32 }
33}
34run().catch(console.dir);
Number of documents deleted: 2
crud_delete.py
1from pymongo import MongoClient
2
3# Replace the uri string with your MongoDB deployment's connection string.
4uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"
5
6client = MongoClient(uri)
7
8# database and collection code goes here
9db = client.sample_guides
10coll = db.comets
11
12# delete code goes here
13doc = {
14 "orbitalPeriod": {
15 "$gt": 5,
16 "$lt": 85
17 }
18}
19result = coll.delete_many(doc)
20
21# amount deleted code goes here
22print("Number of documents deleted: ", result.deleted_count)
23
24# Close the connection to MongoDB when you're done.
25client.close()
Number of documents deleted: 2

이 가이드의 절차를 성공적으로 완료했다면 MongoDB에서 데이터가 삭제됐을 것입니다.

이것으로 MongoDB의 CRUD 작업에 대한 소개를 마쳤습니다.

여기에 제시된 개념에 대한 자세한 내용은 다음 리소스를 참조하세요.

마지막으로
동적 인덱스 빌드하기
5분

Full Text Search로 MongoDB에서 문서를 검색합니다.

시작 가이드
3장
Atlas Search
  • 동적 인덱스 빌드하기
  • 정적 필드 매핑으로 인덱스 빌드하기
  • 복합 연산자로 쿼리하기
  • 패싯으로 쿼리하기