【发布时间】:2021-04-25 07:24:49
【问题描述】:
我有一个来自 previous question 的当前 MongoDB Aggregate 框架管道,但我无法添加填充查询以按 id 获取用户配置文件。
我的代码在下面
Product.aggregate([
{
$group: {
_id: {
hub: "$hub",
status: "$productStatus",
},
count: { $sum: 1 },
},
},
{
$group: {
_id: "$_id.hub",
counts: {
$push: {
k: "$_id.status",
v: "$count",
},
},
},
},
{
$group: {
_id: null,
counts: {
$push: {
k: { $toString: "$_id" },
v: "$counts",
},
},
},
},
{
$addFields: {
counts: {
$map: {
input: "$counts",
in: {
$mergeObjects: [
"$$this",
{ v: { $arrayToObject: "$$this.v" } },
],
},
},
},
},
},
{
$replaceRoot: {
newRoot: { $arrayToObject: "$counts" },
},
},
]);
得到如下结果
[
{
"5fe75679e6f7a62ddaf5b2e9": {
"in progress": 5,
"Cancelled": 4,
"return": 1,
"on the way": 3,
"pending": 13,
"Delivered": 4
}
}
]
预期输出
我需要使用 hubId "5fe75679e6f7a62ddaf5b2e9" 从用户集合中获取用户信息,并期望得到下面表格的最终结果
[
{
"hub": {
"photo": "avatar.jpg",
"_id": "5fe75679e6f7a62ddaf5b2e9",
"name": "Dhaka Branch",
"phone": "34534543"
},
"statusCounts": {
"in progress": 5,
"Cancelled": 4,
"return": 1,
"on the way": 3,
"pending": 13,
"Delivered": 4
}
}
]
第一个 id 是用户 id,在用户集合中可用。
【问题讨论】:
-
要使用数据填充集合,您需要对 3 件事有一个清晰的认识。 (1) 数据来源,(2) 目标。输出集合文档是什么样的?什么是/是数据源?最后,(3)你想用什么逻辑/过程来得到结果。
标签: mongodb mongoose mongodb-query aggregation-framework