如何根据项目名称查找平均评分

时间:2016-12-06 12:24:53

标签: php mongodb

我正在使用PHP和MongoDB构建简单的推荐引擎。我试图找到每个项目的平均评级,但我还没弄清楚。 我的收藏是:

{
"_id" : 1,
"item" : "efg",
"rating" : 5.0,
"date" : ISODate("2014-01-01T08:00:00.000Z")
}

{
"_id" : 2,
"item" : "efg",
"rating" : 2.0,
"date" : ISODate("2014-01-01T08:00:00.000Z")
}

{
"_id" : 3,
"item" : "abc",
"rating" : 5.0,
"date" : ISODate("2014-01-01T08:00:00.000Z")
}

{
"_id" : 4,
"item" : "abc",
"rating" : 4.0,
"date" : ISODate("2014-01-01T08:00:00.000Z")
}

{
"_id" : 5,
"item" : "xyz",
"rating" : 3.0,
"date" : ISODate("2014-01-01T08:00:00.000Z")
}

这是我最近尝试过的代码:

$out = $sales->aggregate(
array(
    '$group' => array(
        '_id' => '$item',
        'avgrating' => array('$avg' => '$rating')
    )
)
);
var_dump($out);

2 个答案:

答案 0 :(得分:0)

请尝试执行以下代码段

$out = $sales->aggregate(
array(
    '$group' => array(
        '_id' => array('item' => '$item'),
        'avgrating' => array('$avg' => '$rating')
    )
)
);
var_dump($out);

答案 1 :(得分:0)

我使用此代码了解它:

$pipeline = array(
array(
    '$group' => array(
        '_id' => '$itemId',
       'avgrating' => array('$avg' => '$rating'),
    ),
)
);

$out = $sales1->aggregate($pipeline);
var_dump($out)