| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- mongodb
- 예매로직
- terminationGracePeriodSeconds
- topologySpreadConstraints
- AWS Route53
- jsp
- AWS
- sessionStorage
- Kubernetes
- 인생이재밌다
- html
- ssh
- chartjs
- Get
- ES6
- AWS RDS
- Java
- zombie-hit apartment
- json
- git
- javascript
- node.js
- spring
- MySQL Error
- 영화예매
- Bootstrap
- spread operator
- ajax
- post
- mysql
- Today
- Total
jongviet
Aug 20, 2021 - mongoose populate 본문
*8월20일
-실무 간 mongoose populate 기능을 이용한 join 코드 개선이 수행 과제로 잡혔다. 물론 난 신입으로 아직 업무를 부여 받은 건 아니지만 어떻게 개선이 된다는 건지 궁금해서 찾아봤다.
*mongoose populate 기능을 이용한 join 코드 개선
->DB에서 조회 후, 자바스크립트 단에서 합쳐 주는 개념, join 처럼 db 자체에서 합쳐주는 것은 아님
스키마 설계
const userSchema = new mongoose.Schema({
name: String,
friends: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }], //이런식으로 지정해줘야 join처럼 모든 데이터 가져올 수 있음
bestFriend: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
});
mongoose.model('User', userSchema);
조회
User.findOne({ name: 'zero' }).populate('bestFriend').exec((err, data) => { //bestFriend를 populate해서 해당 oid를 기준으로 객체의 모든 정보를 받아옴 // 즉 $oid가 실제 User객체로 치환된 것임;
console.log(data);
});
User.findOne({ name: 'zero' }).populate('bestFriend', 'name bestFriend').exec((err, data) => { //두번째 인자가 projection 역할을 해서 _id + 입력된 항목만 조회됨
console.log(data);
});
User.findOne({ name: 'zero' }).populate('bestFriend').populate('friends').exec((err, data) => { //연달아쓰면
console.log(data);
});
-projection은 특정한 부분만 선택하는 개념, 좀 더 좁은 범위의 조회 느낌
*참조 블로그 : https://www.zerocho.com/
'mongoDB' 카테고리의 다른 글
| Sep 22, 2021 - mongoDB 객체로 구성된 배열 쿼리 방법 (0) | 2021.09.22 |
|---|---|
| Sep 11, 2021 - mongoDB transaction (1) | 2021.09.11 |
| Sep 6, 2021 - mongoDB Atlas alert 및 인덱싱 점검 관련 (1) | 2021.09.06 |
| Aug 18, 2021 - MongoDB noSQL문 (1) | 2021.08.18 |
| Aug 7, 2021 - postman 이용하여 mongoDB 데이터 넣기 (0) | 2021.08.07 |