【发布时间】:2020-01-01 20:42:10
【问题描述】:
我刚刚阅读了关于 mongoose 中的聚合的内容,这似乎是一种非常有用的方法,我只是自己测试了一些东西,所以这是我在数据库中的数据:
[
{
product: "chanchuris arayi",
myidveli: "lg",
pasi: 12
},
{
product: "kalbasi",
myidveli: "maiko",
pasi: 10
},
{
product: "chanchuris arayi",
myidveli: "zaza",
pasi: 12
},
{
product: "sulguni",
myidveli: "shotiko",
pasi: 7
},
{
product: "kalbasi",
myidveli: "lg",
pasi: 10
}
]
这是我的代码
db.collection.aggregate([
{
$match: {}
},
{
$group: {
_id: "$_id",
product: "$product",
pasi: {
"$sum": "$pasi"
}
}
}
])
它给了我错误:该字段必须是一个累加器对象,当我在 _id 字段中键入 $product 时,它按我想要的方式工作,但不是这样,所以我很困惑谁能解释我如何聚合正在工作,我的代码有什么问题?
谢谢!
【问题讨论】:
-
好几件事,1) 聚合是 mongoDB 原生的(它是一个管道,可以容纳每个阶段处理数据的阶段链,最后阶段是一种输出),尽管您可能已经读过它猫鼬没关系。 2) $match 确实像 .find() 一样工作,如果您没有任何要过滤的内容,则不需要它。 3)当你在'_id'上分组时,你的样本数据在哪里,你不能像这样对产品进行分组,因为它是数组的许多对象中的一个字段 - 你能否提供整个文档和所需的输出!!
-
我唯一想知道的是为什么我必须在 _id 而不是任何其他字段上分组
-
您可以对任何字段和字段组合进行分组,但不能像在数组中的字段上那样分组,如果您可以提供整个文档和所需的 o/p,我可以帮助您查询..
标签: mongodb aggregation-framework