MongoDB에 데이터 삽입
개요
이 가이드에서는 MongoDB에 데이터를 삽입하는 방법을 설명합니다.
소요 시간: 15분
준비물
절차
MongoDB 인스턴스에 연결합니다.
컬렉션에서 문서와 유사한 클래스를 만듭니다.
다음 클래스에는 문서에 포함될 모든 필드 이름과 유형이 나열되어 있습니다.
1 // class that maps to the fields of a document in the sample_guides.comets collection
2 class 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 }
클래스를 문서 필드에 자동으로 매핑합니다.
C# 에서는 필드를 클래스 속성에 매핑하며, 이 속성은 규칙에 따라 대문자로 표시됩니다. 단, 대소문자 필드를 사용하여 데이터를 삽입해야 합니다. 운전자 가 필드를 대문자에서 카멜식 대/소문자로 자동 변환하도록 하려면 ConventionPack
을 만들고 CamelCase
에 대한 명명 규칙을 등록합니다.
1 // instruct the driver to camelCase the fields in MongoDB 2 var pack = new ConventionPack { new CamelCaseElementNameConvention() }; 3 ConventionRegistry.Register("elementNameConvention", pack, x => true);
연결 코드를 인증합니다.
팁
다음은 MongoDB에 접속하기 위해 필요한 최소한의 코드를 간략하게 정리한 것입니다. 다음 몇몇 단계에서는 데이터를 삽입하기 위해 추가 작업을 수행합니다.
6번째 줄에서 URI 문자열을 자체 Atlas 연결 문자열로 대체합니다.
1 using MongoDB.Bson;
2 using MongoDB.Bson.Serialization.Conventions;
3 using MongoDB.Driver;
4
5 // Replace the uri string with your MongoDB deployment's connection string.
6 var uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
7
8 // instruct the driver to camelCase the fields in MongoDB
9 var pack = new ConventionPack { new CamelCaseElementNameConvention() };
10 ConventionRegistry.Register("elementNameConvention", pack, x => true);
11
12 var client = new MongoClient(uri);
13
14 // database and colletion code goes here
15 // insert code goes here
16 // display the results of your operation
17
18 // class that maps to the fields of a document in the sample_guides.comets collection
19 class Comet {
20 public ObjectId Id { get; set; }
21 public string Name { get; set; }
22 public string OfficialName { get; set; }
23 public double OrbitalPeriod { get; set; }
24 public double Radius { get; set; }
25 public double Mass { get; set; }
26 }
팁
다음은 MongoDB에 접속하기 위해 필요한 최소한의 코드를 간략하게 정리한 것입니다. 다음 몇몇 단계에서는 데이터를 삽입하기 위해 추가 작업을 수행합니다.
13줄에서 URI string 을 자체 Atlas 연결 string 로 바꿉니다.
1 import ( 2 "context" 3 "fmt" 4 "log" 5 "os" 6 7 "go.mongodb.org/mongo-driver/bson" 8 "go.mongodb.org/mongo-driver/mongo" 9 "go.mongodb.org/mongo-driver/mongo/options" 10 ) 11 12 func main() { 13 uri := "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority" 14 15 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) 16 if err != nil { 17 panic(err) 18 } 19 defer func() { 20 if err = client.Disconnect(context.TODO()); err != nil { 21 panic(err) 22 } 23 }() 24 25 // database and colletion code goes here 26 // insert code goes here 27 // display the results of your operation 28 }
팁
다음은 MongoDB에 접속하기 위해 필요한 최소한의 코드를 간략하게 정리한 것입니다. 다음 몇몇 단계에서는 데이터를 삽입하기 위해 추가 작업을 수행합니다.
15줄에서 URI string 을 자체 Atlas 연결 string 로 바꿉니다.
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 import com.mongodb.client.result.InsertManyResult; 6 7 import org.bson.Document; 8 import org.bson.types.ObjectId; 9 10 import java.util.List; 11 import java.util.ArrayList; 12 13 public class CrudInsert { 14 public static void main(String[] args) { 15 String uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 16 17 try (MongoClient mongoClient = MongoClients.create(uri)) { 18 // database and collection code goes here 19 // insert code goes here 20 // display the results of your operation 21 } 22 } 23 }
팁
다음은 MongoDB에 접속하기 위해 필요한 최소한의 코드를 간략하게 정리한 것입니다. 다음 몇몇 단계에서는 데이터를 삽입하기 위해 추가 작업을 수행합니다.
4번째 줄에서 URI 문자열을 자체 Atlas 연결 문자열로 대체합니다.
1 const { MongoClient } = require("mongodb"); 2 // Replace the uri string with your MongoDB deployment's connection string. 3 const uri = 4 "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 5 const client = new MongoClient(uri); 6 async function run() { 7 try { 8 await client.connect(); 9 // database and collection code goes here 10 // insert code goes here 11 // display the results of your operation 12 } finally { 13 // Ensures that the client will close when you finish/error 14 await client.close(); 15 } 16 } 17 run().catch(console.dir);
팁
다음은 MongoDB에 접속하기 위해 필요한 최소한의 코드를 간략하게 정리한 것입니다. 다음 몇몇 단계에서는 데이터를 삽입하기 위해 추가 작업을 수행합니다.
4번째 줄에서 URI 문자열을 자체 Atlas 연결 문자열로 대체합니다.
1 from pymongo import MongoClient 2 3 # Replace the uri string with your MongoDB deployment's connection string. 4 uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority" 5 6 client = MongoClient(uri) 7 8 # database and collection code goes here 9 # insert code goes here 10 # display the results of your operation 11 12 # Close the connection to MongoDB when you're done. 13 client.close()
팁
mongodb+srv
PyMongo를 srv
옵션으로 설치했는지 확인합니다.
python3 -m pip install "pymongo[srv]"
데이터베이스와 collection을 가져옵니다.
작업할 데이터베이스 및 컬렉션으로 전환합니다. 이 경우 sample_guides
데이터베이스 및 comets
컬렉션을 사용하게 됩니다.
// database and collection code goes here
var db = client.GetDatabase("sample_guides");
var coll = db.GetCollection<Comet>("comets");
1 // database and colletion code goes here 2 db := client.Database("sample_guides") 3 coll := db.Collection("comets")
1 // database and collection code goes here 2 MongoDatabase db = mongoClient.getDatabase("sample_guides"); 3 MongoCollection<Document> coll = db.getCollection("comets");
// database and collection code goes here const db = client.db("sample_guides"); const coll = db.collection("comets");
# database and collection code goes here db = client.sample_guides coll = db.comets
컬렉션 comets
에 문서를 삽입합니다.
comets
컬렉션에 새 문서 세 개를 생성하고 삽입합니다. 각 문서는 커밋에 대한 다음과 같은 정보로 구성됩니다.
이름
공식 명칭
궤도 주기(년)
반지름(마일)
킬로그램 단위의 질량
// insert code goes here
var comets = new [] {
new Comet {
Name = "Halley's Comet",
OfficialName = "1P/Halley",
OrbitalPeriod = 75,
Radius = 3.4175,
Mass = 2.2e14
},
new Comet {
Name = "Wild2",
OfficialName = "81P/Wild",
OrbitalPeriod = 6.41,
Radius = 1.5534,
Mass = 2.3e13
},
new Comet {
Name = "Comet Hyakutake",
OfficialName = "C/1996 B2",
OrbitalPeriod = 17000,
Radius = 0.77671,
Mass = 8.8e12
}
};
coll.InsertMany(comets);
1 // insert code goes here 2 docs := []interface{}{ 3 bson.D{{"name", "Halley's Comet"}, {"officialName", "1P/Halley"}, {"orbitalPeriod", 75}, {"radius", 3.4175}, {"mass", 2.2e14}}, 4 bson.D{{"name", "Wild2"}, {"officialName", "81P/Wild"}, {"orbitalPeriod", 6.41}, {"radius", 1.5534}, {"mass", 2.3e13}}, 5 bson.D{{"name", "Comet Hyakutake"}, {"officialName", "C/1996 B2"}, {"orbitalPeriod", 17000}, {"radius", 0.77671}, {"mass", 8.8e12}}, 6 } 7 8 result, err := coll.InsertMany(context.TODO(), docs) 9 if err != nil { 10 panic(err) 11 }
1 // insert code goes here 2 List<Document> documents = new ArrayList<>(); 3 4 Document doc1 = new Document("name", "Halley's Comet").append("officialName", "1P/Halley").append("orbitalPeriod", 75).append("radius", 3.4175).append("mass", 2.2e14); 5 Document doc2 = new Document("name", "Wild2").append("officialName", "81P/Wild").append("orbitalPeriod", 6.41).append("radius", 1.5534).append("mass", 2.3e13); 6 Document doc3 = new Document("name", "Comet Hyakutake").append("officialName", "C/1996 B2").append("orbitalPeriod", 17000).append("radius", 0.77671).append("mass", 8.8e12); 7 8 documents.add(doc1); 9 documents.add(doc2); 10 documents.add(doc3); 11 12 InsertManyResult result = coll.insertMany(documents);
// insert code goes here const docs = [ {name: "Halley's Comet", officialName: "1P/Halley", orbitalPeriod: 75, radius: 3.4175, mass: 2.2e14}, {name: "Wild2", officialName: "81P/Wild", orbitalPeriod: 6.41, radius: 1.5534, mass: 2.3e13}, {name: "Comet Hyakutake", officialName: "C/1996 B2", orbitalPeriod: 17000, radius: 0.77671, mass: 8.8e12} ]; const result = await coll.insertMany(docs);
# insert code goes here docs = [ {"name": "Halley's Comet", "officialName": "1P/Halley", "orbitalPeriod": 75, "radius": 3.4175, "mass": 2.2e14}, {"name": "Wild2", "officialName": "81P/Wild", "orbitalPeriod": 6.41, "radius": 1.5534, "mass": 2.3e13}, {"name": "Comet Hyakutake", "officialName": "C/1996 B2", "orbitalPeriod": 17000, "radius": 0.77671, "mass": 8.8e12}, ] result = coll.insert_many(docs)
팁
_id
필드를 생략하면 드라이버는 ObjectId
_id
필드에 대해 고유한 값을 자동으로 생성합니다.
결과를 표시합니다.
MongoDB의 많은 쓰기 작업은 작업에 대한 정보가 포함된 결과 객체를 반환합니다.
삽입 작업의 경우 C# 드라이버는 삽입되는 문서의 _id
을 자동으로 생성합니다. 여기에서 원본 배열의 속성에 액세스하고 인쇄합니다.
// display the results of your operation
foreach (var comet in comets) {
Console.WriteLine(comet.Id);
}
삽입 작업의 경우 결과 객체에는 드라이버가 성공적으로 삽입한 문서의 _id
이 포함됩니다. 여기에서 해당 속성에 액세스하여 인쇄합니다.
1 // display the results of your operation 2 for _, id := range result.InsertedIDs { 3 fmt.Printf("\t%s\n", id) 4 }
삽입 작업의 경우 결과 객체에는 드라이버가 성공적으로 삽입한 문서의 _id
이 포함됩니다. 여기에서 해당 속성에 액세스하여 인쇄합니다.
1 // display the results of your operation 2 result.getInsertedIds().values().forEach(doc -> System.out.println(doc.asObjectId().getValue()));
삽입 작업의 경우 결과 객체에는 드라이버가 성공적으로 삽입한 문서의 _id
이 포함됩니다. 여기에서 해당 속성에 액세스하여 인쇄합니다.
// display the results of your operation console.log(result.insertedIds);
삽입 작업의 경우 결과 객체에는 드라이버가 성공적으로 삽입한 문서의 _id
이 포함됩니다. 여기에서 해당 속성에 액세스하여 인쇄합니다.
# display the results of your operation print(result.inserted_ids)
결과를 확인합니다.
다음은 전체 코드와 샘플 출력입니다.
참고
ObjectId
값은 표시된 값과 다를 수 있습니다.
1 using MongoDB.Bson;
2 using MongoDB.Bson.Serialization.Conventions;
3 using MongoDB.Driver;
4
5 // Replace the uri string with your MongoDB deployment's connection string.
6 var uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
7
8 // instruct the driver to camelCase the fields in MongoDB
9 var pack = new ConventionPack { new CamelCaseElementNameConvention() };
10 ConventionRegistry.Register("elementNameConvention", pack, x => true);
11
12 var client = new MongoClient(uri);
13
14 // database and colletion code goes here
15 var db = client.GetDatabase("sample_guides");
16 var coll = db.GetCollection<Comet>("comets");
17
18 // insert code goes here
19 var comets = new [] {
20 new Comet {
21 Name = "Halley's Comet",
22 OfficialName = "1P/Halley",
23 OrbitalPeriod = 75,
24 Radius = 3.4175,
25 Mass = 2.2e14
26 },
27 new Comet {
28 Name = "Wild2",
29 OfficialName = "81P/Wild",
30 OrbitalPeriod = 6.41,
31 Radius = 1.5534,
32 Mass = 2.3e13
33 },
34 new Comet {
35 Name = "Comet Hyakutake",
36 OfficialName = "C/1996 B2",
37 OrbitalPeriod = 17000,
38 Radius = 0.77671,
39 Mass = 8.8e12
40 }
41 };
42
43 coll.InsertMany(comets);
44
45 // display the results of your operation
46 foreach (var comet in comets) {
47 Console.WriteLine(comet.Id);
48 }
49
50 // class that maps to the fields of a document in the sample_guides.comets collection
51 class Comet {
52 public ObjectId Id { get; set; }
53 public string Name { get; set; }
54 public string OfficialName { get; set; }
55 public double OrbitalPeriod { get; set; }
56 public double Radius { get; set; }
57 public double Mass { get; set; }
58 }
625604fbd301606fd9998b14 625604fbd301606fd9998b15 625604fbd301606fd9998b16
1 import ( 2 "context" 3 "fmt" 4 "log" 5 "os" 6 7 "go.mongodb.org/mongo-driver/bson" 8 "go.mongodb.org/mongo-driver/mongo" 9 "go.mongodb.org/mongo-driver/mongo/options" 10 ) 11 12 func main() { 13 uri := "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority" 14 15 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) 16 if err != nil { 17 panic(err) 18 } 19 defer func() { 20 if err = client.Disconnect(context.TODO()); err != nil { 21 panic(err) 22 } 23 }() 24 25 // database and colletion code goes here 26 db := client.Database("sample_guides") 27 coll := db.Collection("comets") 28 29 // insert code goes here 30 docs := []interface{}{ 31 bson.D{{"name", "Halley's Comet"}, {"officialName", "1P/Halley"}, {"orbitalPeriod", 75}, {"radius", 3.4175}, {"mass", 2.2e14}}, 32 bson.D{{"name", "Wild2"}, {"officialName", "81P/Wild"}, {"orbitalPeriod", 6.41}, {"radius", 1.5534}, {"mass", 2.3e13}}, 33 bson.D{{"name", "Comet Hyakutake"}, {"officialName", "C/1996 B2"}, {"orbitalPeriod", 17000}, {"radius", 0.77671}, {"mass", 8.8e12}}, 34 } 35 36 result, err := coll.InsertMany(context.TODO(), docs) 37 if err != nil { 38 panic(err) 39 } 40 41 // display the results of your operation 42 for _, id := range result.InsertedIDs { 43 fmt.Printf("\t%s\n", id) 44 } 45 }
ObjectID("624cf31b350635c487d55215") ObjectID("624cf31b350635c487d55216") ObjectID("624cf31b350635c487d55217")
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 import com.mongodb.client.result.InsertManyResult; 6 7 import org.bson.Document; 8 9 import java.util.List; 10 import java.util.ArrayList; 11 12 public class CrudInsert { 13 public static void main(String[] args) { 14 String uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 15 16 try (MongoClient mongoClient = MongoClients.create(uri)) { 17 // database and collection code goes here 18 MongoDatabase db = mongoClient.getDatabase("sample_guides"); 19 MongoCollection<Document> coll = db.getCollection("comets"); 20 21 // insert code goes here 22 List<Document> documents = new ArrayList<>(); 23 24 Document doc1 = new Document("name", "Halley's Comet").append("officialName", "1P/Halley").append("orbitalPeriod", 75).append("radius", 3.4175).append("mass", 2.2e14); 25 Document doc2 = new Document("name", "Wild2").append("officialName", "81P/Wild").append("orbitalPeriod", 6.41).append("radius", 1.5534).append("mass", 2.3e13); 26 Document doc3 = new Document("name", "Comet Hyakutake").append("officialName", "C/1996 B2").append("orbitalPeriod", 17000).append("radius", 0.77671).append("mass", 8.8e12); 27 28 documents.add(doc1); 29 documents.add(doc2); 30 documents.add(doc3); 31 32 InsertManyResult result = coll.insertMany(documents); 33 34 // display the results of your operation 35 result.getInsertedIds().values().forEach(doc -> System.out.println(doc.asObjectId().getValue())); 36 } 37 } 38 }
625716fc5749232edfb4b2d7 625716fc5749232edfb4b2d8 625716fc5749232edfb4b2d9
1 const { MongoClient } = require("mongodb"); 2 // Replace the uri string with your MongoDB deployment's connection string. 3 const uri = 4 "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 await client.connect(); 11 // database and collection code goes here 12 const db = client.db("sample_guides"); 13 const coll = db.collection("comets"); 14 15 // insert code goes here 16 const docs = [ 17 {name: "Halley's Comet", officialName: "1P/Halley", orbitalPeriod: 75, radius: 3.4175, mass: 2.2e14}, 18 {name: "Wild2", officialName: "81P/Wild", orbitalPeriod: 6.41, radius: 1.5534, mass: 2.3e13}, 19 {name: "Comet Hyakutake", officialName: "C/1996 B2", orbitalPeriod: 17000, radius: 0.77671, mass: 8.8e12} 20 ]; 21 22 const result = await coll.insertMany(docs); 23 24 // display the results of your operation 25 console.log(result.insertedIds); 26 27 } finally { 28 // Ensures that the client will close when you finish/error 29 await client.close(); 30 } 31 } 32 run().catch(console.dir);
{ '0': 624d06994e68f44afe8c0da6, '1': 624d06994e68f44afe8c0da7, '2': 624d06994e68f44afe8c0da8 }
1 from pymongo import MongoClient 2 3 # Replace the uri string with your MongoDB deployment's connection string. 4 uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority" 5 6 client = MongoClient(uri) 7 8 # database and collection code goes here 9 db = client.sample_guides 10 coll = db.comets 11 12 coll.drop() 13 14 # insert code goes here 15 docs = [ 16 {"name": "Halley's Comet", "officialName": "1P/Halley", "orbitalPeriod": 75, "radius": 3.4175, "mass": 2.2e14}, 17 {"name": "Wild2", "officialName": "81P/Wild", "orbitalPeriod": 6.41, "radius": 1.5534, "mass": 2.3e13}, 18 {"name": "Comet Hyakutake", "officialName": "C/1996 B2", "orbitalPeriod": 17000, "radius": 0.77671, "mass": 8.8e12}, 19 ] 20 21 result = coll.insert_many(docs) 22 23 # display the results of your operation 24 print(result.inserted_ids) 25 26 # Close the connection to MongoDB when you're done. 27 client.close()
[ObjectId('624d078756f4582197aad408'), ObjectId('624d078756f4582197aad409'), ObjectId('624d078756f4582197aad40a')]
요약
이 가이드를 완료했다면 MongoDB에 데이터를 삽입한 것입니다.
다음 가이드에서는 문서의 필드를 업데이트하는 방법을 알아봅니다.
다음도 참조하세요.
여기에 제시된 개념에 대한 자세한 내용은 다음 리소스를 참조하세요.