【发布时间】:2020-03-21 12:05:12
【问题描述】:
我有“Offers”和“Requests”集合,我需要获取用户提供的所有优惠,按请求对它们进行分组,并在每个请求中找到最低的“Offer.price”,每个优惠都有 requestId 字段。 我正在使用聚合来解决这个问题,
db.Offer.aggregate([{
$match: {
ownerId: mongoose.Types.ObjectId(req.params.ownerId)
}
},
{
$group: {
_id: "$requestId",
price: {
$min: "$price"
}
}
}
])
这就是我得到的:
[ { _id: 5dc47241af1406031489c65c, price: 14 },
{ _id: 5dc47241af1406031489c653, price: 3 },
{ _id: 5dc47241af1406031489c656, price: 5 },
{ _id: 5dc8add63f73953ff408f962, price: 6 },
{ _id: 5dc8add63f73953ff408f969, price: 22 },
{ _id: 5dc47241af1406031489c658, price: 1 } ]
现在我想用“Offer”中的其余数据填充这些
const OfferSchema = new Schema({
requestId: {
type: Schema.Types.ObjectId,
ref: 'Request'
},
ownerId: {
type: Schema.Types.ObjectId,
required: true,
ref: 'User'
},
price: {
type: Number,
required: true
},
createdAt: {
type: Date,
default: Date.now
},
isBest: {
type: Boolean,
default: false
},
isWinner: {
type: Boolean,
default: false,
}
});
做这样的事情最好的方法是什么? 感谢您的帮助!
【问题讨论】:
标签: javascript mongodb mongoose aggregate