将单个整数数组转换为聚合中间整数的适当方法

时间:2019-07-22 15:23:52

标签: mongodb

背景

我有一个mongo查询:

db.items.aggregate([
    {$match: {"tags": "white"}},
    {$lookup: {"from": "tags", "localField": "tags", "foreignField": "_id", as: "TagDetails" }},
    {$unwind: "$TagDetails"},
    {$group: { _id: "$TagDetails.tagvalue", cost: { $sum : "$cost"}}}
]);

请注意,假设匹配项位于lookup上,_id将仅返回单个项目数组。

我使用最后一个unwind命令将每个数组转换为整数。我感觉这是次优的破解。

问题

将数组转换为单个聚合中项的“正确”方法是什么?

到目前为止

我正在尝试使用$reduce,但由于reduce是管道运算符而不是管道阶段,因此我无法使语法起作用。

db.items.aggregate([
    {$match: {"tags": "white"}},
    {$lookup: {"from": "tags", "localField": "tags", "foreignField": "_id", as: "TagDetails" }},
    {$reduce: { input:"$TagDetails", initialValue: "", in: { $concat: ["$$value","$$this"]}}
    {$group: { _id: "$TagDetails.tagvalue", cost: { $sum : "$cost"}}}
]);

0 个答案:

没有答案