MongoDB / Mongoose 쿼리 : 필드 값에 따라 다른 데이터 집합을 가져 오는 방법

denislexic

mongoDB 상호 작용을 위해 mongoose 라이브러리nodejs 와 함께 사용 하고 있습니다.

랜딩 페이지 쿼리 (Netflix 페이지 생각)를 만들고 있으며 각 범주 (코미디, 공포, 드라마 등)에 대해 ~ 15 개의 결과를 얻어야합니다.

아래 그림과 같이 각 "카테고리"에 대한 쿼리를 전송하고 콜백 문제와 데이터베이스에 대한 무거운 요청을 처리하는 것은 훌륭한 솔루션이 아닌 것 같습니다.

const categories = ['horror','drama','comedy']
let counterCallback = 0
let allShows = []
categories.map(category =>{
    Show.find({category: category},{limit: 15}, (err, shows)=>{
       if(shows){ allShows.push(shows)}
       allShows++
       if(allShows === categories.length){ return res.json(allShows) }
    })
})

$or요청을 할까 생각하고 있었는데 각 "또는"의 수를 제한 할 수는 없습니다.

const categories = ['horror','drama','comedy']
Show.find({
    $or:categories.map(category=> {return {category: category} })
},{limit: 10})

"카테고리"당 결과 수를 제한하는 요청을 어떻게받을 수 있습니까?

감사

whoami-fakeFaceTrueSoul

MongoDB의 집계 프레임 워크활용하여 복잡한 쿼리를 실행할 수 있습니다. 아래 쿼리를 시도해보세요.

var categories = ['horror', 'comedy', 'drama']

Show.aggregate([
    /** This $match would help to  limit docs to particular categories, as each pipeline in facet stage has to iterate to all docs in collection for thrice as 3 categories given, So at least limiting docs to needed categories. */
    { $match: { category: { $in: categories } } }, 
    {
        $facet: {
            'horror': [{ $match: { category: 'horror' } }, { $limit: 1 }],
            'comedy': [{ $match: { category: 'comedy' } }, { $limit: 1 }],
            'drama': [{ $match: { category: 'drama' } }, { $limit: 1 }]
        }
    }])

테스트 : MongoDB-Playground

또는 다음을 사용하여 얻을 수 $group있습니다.

Show.aggregate([
    { $match: { category: { $in: categories } } },
    { $group: { _id: '$category', shows: { $push: '$$ROOT' } } },
    { $project: { category: '$_id', _id: 0, shows: { $slice: ['$shows', 1] } } },
    /** Below two stages are optional  */
    { $group: { _id: '', data: { $push: '$$ROOT' } } },
    { $project: { _id: 0 } }
])

테스트 : MongoDB-Playground

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 열의 필터에 따라 열의 모든 새 값을 가져 오기 위해 SQL 테이블 쿼리

분류에서Dev

다른 값에 따라 다른 값을 쿼리하는 방법

분류에서Dev

mongoose mongodb 쿼리에서 필드 값을 얻는 방법은 무엇입니까?

분류에서Dev

Stata 쿼리 : 같은 가정 내에서 다른 행의 데이터에 따라 새 변수를 만드는 데 도움이 필요합니다.

분류에서Dev

MongoDB 쿼리-풀고 null 또는 다른 값을 유지하면서 일치 / 조건에 따라 새 필드 추가

분류에서Dev

다른 필드에 따라 필드에 대한 Mongodb 쿼리

분류에서Dev

행 값에 따라 길이가 다른 두 개의 팬더 데이터 프레임을 결합하는 방법

분류에서Dev

다른 필드에 따라 몇 개의 값을 계산하는 SQL 쿼리

분류에서Dev

필터를 사용하여 스칼라의 데이터 프레임에서 null 값을 포함하는 행 집합을 가져 오는 방법

분류에서Dev

조건에 따라 MongoDB 집계에서 값이 증가하는 필드 추가

분류에서Dev

한 열의 데이터에 따라 다른 열을 결합 할 때 데이터를 가져 오는 SQL

분류에서Dev

MongoDB 문서에서 다른 필드에 따라 필드 업데이트 (Node.js의 Mongoose 사용)

분류에서Dev

내 쿼리의 다른 행에서 값을 가져 오는 방법

분류에서Dev

다른 컬렉션에서 얻은 목록을 기반으로 데이터를 가져 오는 Mongodb 집계 쿼리

분류에서Dev

C # MongoDB 드라이버 : MongoDB에서 AnyIn 필터에 대한 복잡한 쿼리를 실행하는 방법을 찾을 수 없습니다.

분류에서Dev

다른 테이블에서 필드 동상을 가져 오는 쿼리 오류 (테이블 조인)

분류에서Dev

데이터 값에 따라 다른 형식을 적용하는 방법

분류에서Dev

mongodb에서 집계 된 데이터를 가져 오는 데 더 많은 도움이 필요합니다.

분류에서Dev

쿼리 업데이트, 다른 테이블에서 열 이름을 가져 오는 방법

분류에서Dev

mongoDB에 데이터를 저장할 때 _id 값을 내 코드로 가져 오는 방법

분류에서Dev

다른 가져 오기의 결과에 따라 databse의 다른 테이블에서 데이터를 가져 오는 방법

분류에서Dev

다른 가져 오기의 결과에 따라 databse의 다른 테이블에서 데이터를 가져 오는 방법

분류에서Dev

단일 쿼리에서 관계형 필드 데이터를 가져 오는 방법

분류에서Dev

어떻게의 다른 값에 따라 SQL 쿼리에 대한 몇 가지 데이터를 제외하는?

분류에서Dev

Mongoose에서 하나의 쿼리로 데이터를 가져오고 계산하는 방법

분류에서Dev

Joomla 2.5 데이터베이스 열, 필드 이름 및 값에서 값을 가져 오는 방법

분류에서Dev

Solr 데이터 구성 오류, "드라이버"속성에 대해 여는 따옴표가 필요합니다.

분류에서Dev

필드가 다른 필드보다 크거나 작을 때 Mongoose를 찾고 업데이트하는 방법

분류에서Dev

Mongoose .find 쿼리 결과에 쿼리 메타 데이터가 포함되어 있습니까? 컬렉션의 각 속성을 수동으로 투영 할 수 없습니다. 문서를 가져 오는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    다른 열의 필터에 따라 열의 모든 새 값을 가져 오기 위해 SQL 테이블 쿼리

  2. 2

    다른 값에 따라 다른 값을 쿼리하는 방법

  3. 3

    mongoose mongodb 쿼리에서 필드 값을 얻는 방법은 무엇입니까?

  4. 4

    Stata 쿼리 : 같은 가정 내에서 다른 행의 데이터에 따라 새 변수를 만드는 데 도움이 필요합니다.

  5. 5

    MongoDB 쿼리-풀고 null 또는 다른 값을 유지하면서 일치 / 조건에 따라 새 필드 추가

  6. 6

    다른 필드에 따라 필드에 대한 Mongodb 쿼리

  7. 7

    행 값에 따라 길이가 다른 두 개의 팬더 데이터 프레임을 결합하는 방법

  8. 8

    다른 필드에 따라 몇 개의 값을 계산하는 SQL 쿼리

  9. 9

    필터를 사용하여 스칼라의 데이터 프레임에서 null 값을 포함하는 행 집합을 가져 오는 방법

  10. 10

    조건에 따라 MongoDB 집계에서 값이 증가하는 필드 추가

  11. 11

    한 열의 데이터에 따라 다른 열을 결합 할 때 데이터를 가져 오는 SQL

  12. 12

    MongoDB 문서에서 다른 필드에 따라 필드 업데이트 (Node.js의 Mongoose 사용)

  13. 13

    내 쿼리의 다른 행에서 값을 가져 오는 방법

  14. 14

    다른 컬렉션에서 얻은 목록을 기반으로 데이터를 가져 오는 Mongodb 집계 쿼리

  15. 15

    C # MongoDB 드라이버 : MongoDB에서 AnyIn 필터에 대한 복잡한 쿼리를 실행하는 방법을 찾을 수 없습니다.

  16. 16

    다른 테이블에서 필드 동상을 가져 오는 쿼리 오류 (테이블 조인)

  17. 17

    데이터 값에 따라 다른 형식을 적용하는 방법

  18. 18

    mongodb에서 집계 된 데이터를 가져 오는 데 더 많은 도움이 필요합니다.

  19. 19

    쿼리 업데이트, 다른 테이블에서 열 이름을 가져 오는 방법

  20. 20

    mongoDB에 데이터를 저장할 때 _id 값을 내 코드로 가져 오는 방법

  21. 21

    다른 가져 오기의 결과에 따라 databse의 다른 테이블에서 데이터를 가져 오는 방법

  22. 22

    다른 가져 오기의 결과에 따라 databse의 다른 테이블에서 데이터를 가져 오는 방법

  23. 23

    단일 쿼리에서 관계형 필드 데이터를 가져 오는 방법

  24. 24

    어떻게의 다른 값에 따라 SQL 쿼리에 대한 몇 가지 데이터를 제외하는?

  25. 25

    Mongoose에서 하나의 쿼리로 데이터를 가져오고 계산하는 방법

  26. 26

    Joomla 2.5 데이터베이스 열, 필드 이름 및 값에서 값을 가져 오는 방법

  27. 27

    Solr 데이터 구성 오류, "드라이버"속성에 대해 여는 따옴표가 필요합니다.

  28. 28

    필드가 다른 필드보다 크거나 작을 때 Mongoose를 찾고 업데이트하는 방법

  29. 29

    Mongoose .find 쿼리 결과에 쿼리 메타 데이터가 포함되어 있습니까? 컬렉션의 각 속성을 수동으로 투영 할 수 없습니다. 문서를 가져 오는 방법은 무엇입니까?

뜨겁다태그

보관