mongoDB
-
[ 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 ] 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 ] 몽고cloud IP 등록하기 (ft. 연결 에러)Topic/Database 2022. 12. 24. 16:47
몽고DB와 연결을 해서 잘 쓰고 있었는데 배포를 하고 DB 연결이 안 되는 문제가 발생했다. 요청할 때 end point를 바꾸니 정확하지 않다고 떠서 routes에서 분기는 잘 되는 것으로 확인했고 몽고 클라우드를 확인해 보았다. 몽고 cloud 안의 프로젝트 cluster에 들어가 Network Access 클릭 ADD IP ADDRESS를 눌러 본인의 IP 등록 Pending이 끝나고 동작시키면 다시 잘 동작한다.
-
[ MongoDB ] mongoose 배열 값 추가, 삭제Topic/Database 2022. 9. 13. 14:42
type이 배열인 필드에 값 추가하기 ($push) // 해당 날짜 데이터에 userIp 추가해주기 await findTodayData.updateOne({ $push: { count: userIp, }, }); type이 배열인 필드에 값 삭제하기 ($pull) // 해당 날짜 데이터에 userIp 제거하기 await findTodayData.updateOne({ $pull: { count: userIp, }, }); // 혹은 pullAll로 해당 값을 삭제해줄 수도 있다. push로 배열에 넣었으니 pull로 배열에서 뺀다.
-
[ MongoDB ] 몽고DB 컬렉션 내 필드 전체에 update하는 방법Topic/Database 2022. 9. 1. 13:39
프로젝트를 진행하다가 기획이 수정되어 컬렉션 내 모든 곳에 필드를 추가할 일이 생겼다. 한 개를 변경하는 것은 updateOne으로 쉽게 했었는데 이번에 updateMany를 사용하게 되면서 일괄적으로 데이터를 추가하는 방법을 알아보자. updateMany의 인자는 총 3개이다. 첫번째 인자는 조회 조건을 가리킨다. 두번째 인자는 변경할 요소를 의미하고, $set 키워드를 사용하지 않는다면 작성한 내용으로 문서 전체가 변경된다. 세번째 인자는 upsert 여부와 다중으로 모두 수정할 것인지를 선택하는 옵션이다. dbName.updateMany({ lastName: LEE }, { $set: { isPass: true}}, { multi: true } ) 이렇게 작성해주면 실제 DB에서 lastName이 ..