我有一个订单表和一个表格表。表单有很多订单,我使用以下命令运行成功的$ lookup:
{
from: 'orders',
localField: 'slug',
foreignField: 'form_slug',
as: 'orders'
}
然后我尝试像这样投射:
{quantities : "$orders.line_items.quantity"}
问题是我得到一个嵌套数组的数组(见下面的结果),当我真的只需要总和时。
是否可以在嵌套数组中以某种方式$ sum这些值?
"quantities": [
[
NumberLong(1)
],
[
NumberLong(1),
NumberLong(1)
],
[
NumberLong(1)
],
[
NumberLong(1)
],
[
NumberLong(1)
],
[
NumberLong(1),
NumberLong(1),
NumberLong(1)
],
[
NumberLong(1)
],
[
NumberLong(1)
]
]
答案 0 :(得分:1)
您可以尝试对Mongo 3.4
版本
以下查询使用$reduce
和$concatArrays
缩小为与另一个$reduce
链接的值数组,以计算总数。
{
$project: {
total: {
$reduce: {
input: {
$reduce: {
input: "$orders.line_items.quantity",
initialValue: [],
in: {
$concatArrays: ["$$value", "$$this"]
}
}
},
initialValue: 0,
in: {
$add: ["$$value", "$$this"]
}
}
}
}
}
Mongo 3.2
及更低。在$lookup
{$unwind:"$orders"},
{$unwind:"$orders.line_items"},
{$unwind:"$orders.line_items.quantity"},
{$group:{"_id":null, total:{"$sum":"$orders.line_items.quantity"}}}
答案 1 :(得分:1)
spring.datasource.url=jdbc:postgresql://localhost:5432/track-courier
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.hibernate.ddl-auto=update
{ "$lookup": { "from": "orders", "localField": "slug", "foreignField": "form_slug", "as": "orders" } }, { "$unwind": "$orders" }, { "$unwind": "$orders.line_items.quantities" }, { "$unwind": "$orders.line_items.quantities" }, { "$group": { "_id": "$_id", "sum": { "$sum": "$orders.line_items.quantities" } } }