【发布时间】:2021-05-05 21:19:04
【问题描述】:
由于我是 mongodb 和 nodejs 的新手,我被困在这里,我有一个索赔集合,每个索赔都有一个 orderId 作为字段,我想做的是按订单 ID 对所有索赔进行分组并显示他们在一系列订单中,例如我有这些声明:
[
{
message: "claim1",
orderId: 123456789
},
{
message: "claim2",
orderId: 0000000
},
{
message: "claim3",
orderId: 123456789
},
{
message: "claim4",
orderId: 0000000
}
]
我想要做的是按顺序对这些索赔进行分组,我发现我可以在互联网上搜索时使用 $group 来完成,但困难的部分是我希望结果是一系列订单和每个案例这个数组包含一些订单字段和这个订单的声明数组。这就是我想要的结果:
[
{
orderId: 123456789,
orderNumber: "OrderNumber"
// i want to get this from the order document in the database,
claims: [
{
message: "claim1"
},
{
message: "claim2"
}
]
},
{
orderId: 00000000,
orderNumber: "OrderNumber"
// i want to get this from the order document in the database,
claims: [
{
message: "claim2"
},
{
message: "claim4"
}
]
}
]
这是一个订单示例:
{
_id:123456789,
orderNumber:112,
orderPrice:14,
created_at: 2020-04-29T16:34:48.522+00:00
updated_at: 2020-05-01T14:03:04.844+00:00
}
我一直在寻找解决方案,但找不到任何解决方案,我开始认为 mongodb 聚合不可能做到这一点。谢谢你的帮助
【问题讨论】:
-
使用
$lookup可以轻松完成,您应该将order架构添加到您的问题中,因为它是回答所必需的。 -
感谢您的回答@TomSlabbaert 我在问题中添加了订单模式
标签: node.js mongodb aggregation-framework grouping