mongodb 에서 아주 좋 은 Aggregate 입문 강좌 입 니 다.
aggregate 는 집합 이라는 뜻 으로 번역 되 었 습 니 다.그러나 실제 적 으로 사용 하 는 체험 은 Liux 의 파이프 와 같 습 니 다.모든 파 이 프 를 처리 한 후에 결 과 를 다음 파 이 프 를 건 네 주 십시오.당신 의 데 이 터 는 물 과 같 습 니 다.마지막 으로 각 파 이 프 를 통 해 원 하 는 수 거 를 얻 을 수 있 습 니 다.
저 희 는 보통 Aggregate 로 뭘 합 니까?
aggregate 조회 문서
취 합 평균 수 등 데이터 처리 group sum 지리 적 위치 정보$geoNear
$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 등 일반적인 작업
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.