We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
APIの追加実装あとで。 ※app routerの特性を考慮した「細粒度のAPI」を意識した設計で。
/api/companies/{company_id}/summary
/api/companies/{company_id}
/api/companies/{company_id}/projects/summary
/api/companies/{company_id}/projects?page={page}&per_page={per_page}
/api/projects/{project_id}
/api/projects/{project_id}/work-logs/summary
/api/projects/{project_id}/work-logs?page={page}&per_page={per_page}
集約パイプライン
実行順序
$match: ドキュメントをフィルタリング(SQLのWHERE句に相当)。 $group: ドキュメントをグループ化し、集計操作を行う(SQLのGROUP BY句に相当)。 $project: 出力するフィールドを指定したり、新しいフィールドを追加。 $sort: ドキュメントをソートする。 $limit / $skip: 結果の数を制限したり、スキップしたり(ページネーションに使用)。 $lookup: 他のコレクションとの結合を行う(SQLのJOINに相当)。
The text was updated successfully, but these errors were encountered:
集約パイプラインのネタ↓
let pipeline = vec![ doc! { "$match": { "company_id": company_id } }, doc! { "$group": { "_id": null, "total_projects": { "$sum": 1 }, "active_projects": { "$sum": { "$cond": [{ "$eq": ["$status", "active"] }, 1, 0] } }, "total_budget": { "$sum": "$budget" } } }, doc! { "$project": { "_id": 0, "total_projects": 1, "active_projects": 1, "total_budget": 1, "average_budget": { "$divide": ["$total_budget", "$total_projects"] } } } ];
$match
$group
$project
適切に設計すれば、個別のクエリを実行するより高速。
⭐️これをRSC側で呼び出せば初期ロード時間も短縮可能か?
Sorry, something went wrong.
No branches or pull requests
内容
APIの追加実装あとで。
※app routerの特性を考慮した「細粒度のAPI」を意識した設計で。
対象
企業関連API
/api/companies/{company_id}/summary
/api/companies/{company_id}
プロジェクト関連API
/api/companies/{company_id}/projects/summary
/api/companies/{company_id}/projects?page={page}&per_page={per_page}
プロジェクト詳細取得API:
/api/projects/{project_id}
勤怠記録関連API
/api/projects/{project_id}/work-logs/summary
/api/projects/{project_id}/work-logs?page={page}&per_page={per_page}
補足・メモ
集約パイプライン
活用してみる?複数のステージから構成され、各ステージでデータに操作をかける。
SQLの
実行順序
を、自前で定義してる感じか?例)projectドキュメントに、最新の勤怠記録サマリーを埋め込む
→どれくらい頻繁にアクセスされるか次第
The text was updated successfully, but these errors were encountered: