반응형
Mongoose : 단일 호출로 여러 쿼리 채우기
Mongoose에서는 쿼리 채우기를 사용하여 쿼리 후 추가 필드를 채울 수 있습니다. 다음과 같이 여러 경로를 채울 수도 있습니다.
Person.find({})
.populate('books movie', 'title pages director')
.exec()
그러나 이것은 제목, 페이지 및 감독에 대한 필드를 수집하는 책에 대한 조회를 생성하고 제목, 페이지 및 감독에 대한 필드를 수집하는 영화에 대한 조회도 생성합니다. 내가 원하는 것은 책에서만 제목과 페이지를 얻고 영화에서 감독을 얻는 것입니다. 다음과 같이 할 수 있습니다.
Person.find({})
.populate('books', 'title pages')
.populate('movie', 'director')
.exec()
예상 결과와 쿼리를 제공합니다.
그러나 첫 번째 스 니펫과 유사한 "한 줄"구문을 사용하여 두 번째 스 니펫의 동작을 가질 수있는 방법이 있습니까? 그 이유는 채우기 함수에 대한 인수를 프로그래밍 방식으로 결정하고 공급하기를 원하기 때문입니다. 여러 채우기 호출에 대해서는 그렇게 할 수 없습니다.
mongoose의 소스 코드를 살펴본 후 다음과 같이 해결했습니다.
var populateQuery = [{path:'books', select:'title pages'}, {path:'movie', select:'director'}];
Person.find({})
.populate(populateQuery)
.execPopulate()
다음과 같이 할 수도 있습니다.
{path:'user',select:['key1','key2']}
이것은 Mongoose JS 문서 http://mongoosejs.com/docs/populate.html을 기반으로 수행되는 방법입니다 .
사용자와 도서를 포함하는 BookCollection 스키마가 있다고 가정 해 보겠습니다. 쿼리를 수행하고 관련 사용자 및 도서와 함께 모든 BookCollection을 가져 오려면 다음을 수행합니다.
models.BookCollection
.find({})
.populate('user')
.populate('books')
.lean()
.exec(function (err, bookcollection) {
if (err) return console.error(err);
try {
mongoose.connection.close();
res.render('viewbookcollection', { content: bookcollection});
} catch (e) {
console.log("errror getting bookcollection"+e);
}
참고 URL : https://stackoverflow.com/questions/21069813/mongoose-multiple-query-populate-in-a-single-call
반응형
'IT Share you' 카테고리의 다른 글
부트 스트랩 초기 축소 요소 (0) | 2020.12.03 |
---|---|
jquery가 데이터 속성 값을 가져올 수 없습니다. (0) | 2020.12.03 |
Javascript .querySelector 찾기 (0) | 2020.12.03 |
C #을 사용하여 필드 크기 (바이트) 가져 오기 (0) | 2020.12.03 |
JavaScript에서 문자열을 수학 표현식으로 평가 (0) | 2020.12.03 |