私は新しい仮想母集団機能を使用する(Mongoose 4.13、Mongo 3.6を使用して)Mongooseスキーマで集約をしようとしています。モンゴース仮想母集団と集計
const ProjectSchema = new mongoose.Schema({
projectId: Number,
description: String
});
ProjectSchema.virtual('tasks', {
ref: 'Task',
localField: 'projectId',
foreignField: 'projectId'
justOne: false
]);
const TaskSchema = new mongoose.Schema({
taskId: Number,
projectId: Number
hours: Number
});
const Project = mongoose.model('Project', ProjectSchema);
const Task = mongoose.model('Task', TaskSchema);
プロジェクトに照会し、関連するタスクを移入が.populateを使用して正常に動作している()のように:
は、私は、スキーマ(説明のために簡略化)次ているとしましょう
Project.find({projectId: <id>}).populate('tasks');
しかし、今私はプロジェクトごとにタスクの時間を合計したいと思います($ sumの部分をbtw ..の下に残しました)。私は何があっても空の配列を返すだけです。バーチャルポピュレートと集約することはできませんか?
const result = await Project.aggregate([
{ $match : { projectId: <id> } },
{ $lookup: {
from: 'tasks',
localField: 'projectId',
foreignField: 'projectId',
as: 'tasks'
},
{
$unwind: '$tasks'
}
}
]);
うーん..私はhttps://stackoverflow.com/questions/46472643/how-to-aggregate-when-using-populate([SO質問]この沿って来ました-virtuals-in-mongoose)ここでは、$ popupとvirtual populateを使用する方法について説明します。それについての考えは? – Ramon