【发布时间】:2015-12-23 16:36:18
【问题描述】:
我有两个 Mongoose 模型:一个用于交易,另一个用于与它们关联的标签。为了实现一些报告,我需要这样的聚合代码:
Transaction.aggregate([
{ $unwind: '$tags' },
{
$group: {
_id: '$tags',
amount: {
$sum: '$amount'
}
}
}
])
问题
这会产生包含_id 和amount 的输出。现在,我想从模型中填充其他字段(例如name),保留计算出的amount 列。我可以在一个简单的populate 中做到这一点吗?
编辑
我所描述的模型的架构:
var TransactionSchema = new Schema({
description: {
type: String,
trim: true
},
amount: {
type: Number,
required: 'Forneça um valor',
},
date: {
type: Date,
required: 'Forneça uma data',
default: Date.now
},
fromOfx: {
type: Boolean,
default: false
},
created: {
type: Date,
default: Date.now
},
correlated: {
type: Boolean,
default: false
},
tags: [{
type: Schema.Types.ObjectId,
ref: 'TransactionTag'
}],
correlates: [{
type: Schema.Types.ObjectId,
ref: 'Transaction'
}],
user: {
type: Schema.Types.ObjectId,
ref: 'User'
}
});
var TransactionTagSchema = new Schema({
name: {
type: String,
required: 'Forneça um nome',
trim: true
},
description: {
type: String,
trim: true
},
amount: {
type: Number
}
});
【问题讨论】:
-
您好,您可以分享示例文档吗?
-
@JohnnyHK:我认为这不是一回事,因为我有要填充的字段的 ObjectId,但我仍然需要保留
amount字段的计算值.我确实尝试了该 sn-p,但该列根本没有填充。这是我的第一个大型 Node 项目,所以我非常讨厌调试它。我可以做些什么来诊断为什么该命令不起作用? -
@RohitJain:使用架构编辑;)