我的文件看起来是这样的:MongoDB的平均嵌入式阵列作为额外的字段
{
"_id" : "53ce85eda2579da8b40c1f0f",
"name" : "Autokino",
"tags" : [
"forMen"
],
"ratings" : [
{ "rating" : 5, "uuid" : "..."},
{ "rating" : 4, "uuid" : "..."},
{ "rating" : 4, "uuid" : "..."},
{ "rating" : 1, "uuid" : "..."},
]
}
现在我需要ratings.rating的平均值(这里应该是3.5)。我的查询是这样的:
activities.aggregate([
{ $match: { _id: ObjectID(req.params.id) } },
{ $unwind: '$ratings' },
{ $group: {
_id: '$_id',
rating: { $avg: '$ratings.rating'},
}},
]);
它的工作原理,但我得到的是:
{
"_id" : "53ce85eda2579da8b40c1f0f",
"rating" : 3.5
}
,这就是我需要得到:
{
"_id" : "53ce85eda2579da8b40c1f0f",
"name" : "Autokino",
"tags" : [
"forMen"
],
"rating" : 3.5
}
(原始文档而不评级阵列但随着等级的平均)
我怎样才能解决这个问题?
我的文档大,有许多领域,是有什么事,可以让我访问洞文件? – dkoch
@dkoch在MongoDB中2.6存在$$ ROOT'变量,但将只分配给一个域,即使它是所有的文件在当前流水线阶段。你仍然需要一个最终的'$ project'来获得原始结构。无论如何,MongoDB查询都是数据结构。实际上应该生成它们而不是硬编码它们。 –
开卷不起作用,因为$评级不会在第二个上市的投影 – dkoch