mongodb 에서 아주 좋 은 Aggregate 입문 강좌 입 니 다.

머리말
aggregate 는 집합 이라는 뜻 으로 번역 되 었 습 니 다.그러나 실제 적 으로 사용 하 는 체험 은 Liux 의 파이프 와 같 습 니 다.모든 파 이 프 를 처리 한 후에 결 과 를 다음 파 이 프 를 건 네 주 십시오.당신 의 데 이 터 는 물 과 같 습 니 다.마지막 으로 각 파 이 프 를 통 해 원 하 는 수 거 를 얻 을 수 있 습 니 다.
저 희 는 보통 Aggregate 로 뭘 합 니까?
aggregate 조회 문서
취 합 평균 수 등 데이터 처리 group sum 지리 적 위치 정보$geoNear
  • 기본적으로 mongodb 의 모든 조회 조작 은 우리 가 aggregate 로 실현 할 수 있 습 니 다.이것 을 잘 사용 하면 기본적으로 만금 유 입 니 다
  • 여기 서 저 는 주로 mongodb 가 지리 적 위치 정보 조회 에서 사용 한 기술 을 기록 하고 싶 습 니 다.거 리 를 조회 할 수 있 을 뿐만 아니 라 거리 에 따라 정렬 할 수 있 습 니 다.
    $geoNear 지리 적 위치 정보 조회
    우선,우리 의 좌표 데 이 터 는 라 이브 러 리 에 어떻게 저장 되 는 지,유형 은 Array 입 니 다.2d 색인 을 추가 하 는 것 을 기억 하 세 요.물론 3d 색인 도 있 습 니 다.아직 사용 되 지 않 았 습 니 다.
    
     const storeschema = new mongoose.Schema({
      name: { type: String, required: true },
      point: { type: Array, required: true }, // [lon, lat]
     });
     storeschema.index({ point: '2d' });
     return mongoose.model('store', storechema);
    그리고 지리 적 조회 코드 에 따 르 면...
    
    this.ctx.model.Store.aggregate([{
        $geoNear: {
         spherical: true, // spherical            
         distanceMultiplier: 6378137, 
         maxDistance: 10000,
         near: [ lon1, lat1 ],
         distanceField: 'dist',
         key: 'point',
         query: {
         }
        },
     },
     //distanceMultiplier                      6378137     m
     //maxDistance         
    // near      
    // distanceField         
    // key          
    // query                       
    재 미 있 는 게 하나 있어 요match.그래서 여기 서 query 속성 이 있어 서 아 쉬 움 을 보완 할 수 있어 요.
    하지만 너 는   뒤에$match 를 사용 하여 찾 은 모든 지리 적 위치 정보 데 이 터 를 다시 한 번 선별 합 니 다.
    $lookup mongodb 의 연결 표 조회
    $lookup 은 새로운 mongodb 버 전에 서 만 사용 할 수 있 는 속성 입 니 다.물론 이 속성 도 aggregate 에 사 용 됩 니 다.이전 mongodb 에서 연결 할 수 없 었 던 아 쉬 움 을 보완 합 니 다.
    코드 보기
    
    await this.ctx.model.MemberInfo.aggregate([
            {
              $match: { store: new ObjectId(store) }
            },
            {
              $lookup: {
                from: 'users',
                localField: 'user',
                foreignField: '_id',
                as: 'user'
              }
            },
            {
              $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: [ '$user', 0 ] }, '$$ROOT' ] } }
            },
            {
              $match: { 'certification.name': { $regex: search } }
            },
            {
              $project: { _id: 1 }
            }
          ]);
    member info 와 user 표 가 여기 있 습 니 다.member info 를 가 져 오 려 고 합 니 다.  localField: 'user' 외부 키 에 대응 하 는 user 표foreignField: '_id' id 필드 의 추가 속성...
    솔직히 제 회원표 에 사용자 ID 만 저 장 돼 있어 요.  지금 사용자 의 다른 정 보 를 받 고 싶 습 니 다.
    링크 를 붙 여 주세요.
    마지막 에 쓰다
    물론 그 는 만금 유 를 조회 하 는 것 이 라 고 할 수 있 습 니 다.그 는 당연히 데이터 의 출력 을 정의 하 는 것 을 지지 합 니 다.  limit$sort 등 일반적인 작업
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기