我在使用MongoDB中的聚合方法正确分组数据时遇到麻烦。 我有这样的模式
const ProductSchema = new Schema({
productNum: { type: String, required: true },
serialNum: {type: String, unique: true},
price: Number,
condition: { type: String, required: true },
seller: { type: Schema.Types.ObjectId, ref: "User" }
})
产品可以具有相同的productNum,但每个productNum由用户创建的唯一序列号。 我要实现的是一种将具有相同productNumbers和具有相同序列号的产品归同一用户分组的方法。
例如,这就是我要实现的目标。
[{
productNum: Product-1,
seller: 'SELLER-ONE-populated',
parts: [{serialNumber: 1, ...},{ serialNumber 2, ...}]
},
{
productNum: Product-1,
seller: 'SELLER-TWO-populated',
parts: [{serialNumber: 3, ...},{ serialNumber 4, ...}]
},
{
productNum: Product-2,
seller: 'SELLER-ONE-populated',
parts: [{serialNumber: 21, ...},{ serialNumber 22, ...}]
}]
这是我编写的代码
const query = { _id: "$productNum", parts: { $push: "$$ROOT" } };
db.Model.aggregate([
{ $group: query },
{
$lookup: {
from: "users",
as: "seller",
let: {
id: "$_id.str"
},
pipeline: [
{ $match: { $expr: { $eq: ["$seller", "$$id"] } } },
{
$project: {
emailVerified: 0
}
}
]
}
},
{ $skip: skip },
{ $limit: limit }
])
我得到的结果是
[{
productNum: Product-1,
seller: ['SELLER-ONE-populated', 'SELLER-TWO-populated'],
parts: [{serialNumber: 1, ...},{ serialNumber 2, ...},
{serialNumber: 3, ...},{ serialNumber 4, ...}]
},
{
productNum: Product-(2),
seller: ['SELLER-ONE-populated', 'SELLER-TWO-populated'],
parts: [{serialNumber: 21, ...},{ serialNumber 22, ...}]
}]
我无法告诉哪个卖家拥有产品。 谢谢。