我的文件看起來是這樣的: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