Topic/Database
-
[ MongoDB ] 컬렉션에서 field 이름 변경, 새로운 field 추가, 기존 field 삭제하는 방법Topic/Database 2023. 9. 2. 02:22
대량으로 MongoDB 컬렉션에서 키 이름을 변경하고, 새로운 키를 추가하고, 기존의 키를 삭제하려면 MongoDB의 업데이트 쿼리를 사용해야 합니다. 대량 변경을 수행하는 예시. 키 이름 변경: db.collection.updateMany({}, { $rename: { "name1": "name2" } }) 위의 쿼리는 collection을 대상으로 모든 문서에서 name1 필드를 name2로 변경합니다. 새로운 키 추가: db.collection.updateMany({}, { $set: { "name3": "value3" } }) 위의 쿼리는 collection을 대상으로 모든 문서에 name3 필드를 추가하고, 해당 필드에 "value3" 값을 할당합니다. 기존 키 삭제: db.collection...
-
[ MongoDB ] document의 field 이름 변경하는 방법Topic/Database 2023. 8. 19. 12:11
기존 document 예시 { "occupation":"Doctor", "name": { "first":"Jimmy", "additional":"Smith" } 요구사항 - additional의 이름을 last로 변경하고 싶다. 단순 변경하고 싶을 때 db.foo.updateMany({}, { $rename: { "name.additional": "name.last" } }, false, true); 속성을 포함하는 문서를 업데이트하고 싶을 때 db.foo.update({ "name.additional": { $exists: true } }, { $rename: { "name.additional": "name.last" } });
-
[ NestJS ] mongoose에서 찾은 데이터 return 시 에러나는 이유Topic/Database 2023. 8. 5. 17:40
NestJS에서 MongoDB에서 찾은 모델을 그대로 반환하려고 할 때 에러가 발생하는 이유는 반환하려는 데이터의 형식이 일치하지 않기 때문입니다. NestJS는 일반적으로 DTO(Data Transfer Object)를 사용하여 데이터의 형식을 정의하고 유효성을 검사합니다. DTO를 사용하지 않고 MongoDB에서 찾은 모델을 그대로 반환하려는 경우, 해당 모델의 형식이 기본적인 JavaScript 객체(Object) 형태이거나 Mongoose 모델일 수 있습니다. 이 경우 NestJS에서 예상하는 형식과 일치하지 않으므로 오류가 발생합니다. 해결하는 방법으로는 만약 DTO를 사용하지 않고 MongoDB에서 찾은 모델을 그대로 반환하려는 경우, 데이터 모델을 직접 DTO로 변환해야 합니다. 일반적으로 ..
-
[ MongoDB ] aws ec2(ubuntu 22.04) MongoDB에 MongoDB compass 연결하기Topic/Database 2023. 5. 5. 21:33
ec2에서 mongodb를 설치하고 mongosh을 눌렀을 때 정상적으로 접속이 가능한 상태가 전제이고 MongoDB compass를 연결해보는 작업이다. 우선 사용하고자 하는 DB로 바꿔준다. show dbs use test db.getUsers() db.createUser({ user: ‘testUser1`, pwd: ‘’password77, roles: [{role: 'readWrite', db: 'test'}]}) db에 접근할 user를 만들어주었다. 다시 한번 db.getUsers()를 통해 잘 만들어졌는지 체크한다. db.getUsers() // -> 결과 { users: [ { _id: 'test.testUser1, userId: new UUID("bdsdwfad-adad-9999-fje0..
-
[ MongoDB ] .sort() 에러 (ft. query)Topic/Database 2023. 3. 11. 12:37
데이터를 최신순으로 가져오면서 필드의 값이 49를 넘지 않는 조건으로 찾을 때 이전 코드 todayCoupon = await Day.findOne({ kakao: { $lte: 49 } }).sort({ _id: -1 }); 이런 식으로 코드를 짰는데 자꾸만 todayCoupon이 undefined로 떠서 서비스에 문제가 생겼었다. 이것을 해결하려면 코드를 풀어주면 된다. 순차적으로 todayCoupon = await Day.findOne().sort({ _id: -1 }); // 먼저 sort시켜서 하나를 찾고 if (todayCoupon._doc.kakao
-
[ MongoDB ] Document에서 중첩 객체의 속성을 제거하는 방법(객체 내 객체)Topic/Database 2023. 2. 11. 19:07
mongo db document data { "_id": ObjectId("5589044a7019e802d3e9dbc5"), "sessionId": LUUID("f49d4280-ced0-9246-a3c9-a63e68e1ed45"), "teamId": LUUID("6ef7d1a8-f842-a54c-bd8c-daf6481f9cfc"), "variableId": LUUID("59d1b512-eee2-6c4b-a5b5-dda546872f55"), "values": { "725400": 691.0000000000000000, "725760": 686.0000000000000000, "726120": 683.0000000000000000, "726480": 681.0000000000000000, "726840": ..
-
[ MongoDB ] 몽고DB modelingTopic/Database 2022. 12. 31. 09:23
몽고 DB에서의 모델링은 sql의 모델링과 다르다. 몽고 DB에서의 모델링은 2가지 방법을 가지고 있는데 Embedding 방법, Multiple-Collection 방법이 있다. 이 두 가지 방법은 일대일이나 일대다 관계냐에 따라 나뉜다. 일대일 관계 { \_id: “joe”, name: “Joe Bookreader” } { street: “123 Fake Street”, city: “Faketon”, state: “MA”, zip: “12345” } 위와 같이 document끼리 일대일 관계인 경우 { \_id: “joe”, name: “Joe bookreader”, address: { street: “0123 Fake Street”, city: “Faketon”, state: “MA”, zip: “..