0
我試着組數由現場publish_targetMongoDB的PHP - 組查詢
使用MySQL我只是做:
$postsByPlatform = $db->query("SELECT COUNT(*) as `value`, `publish_target` as `key` FROM `Post` GROUP BY `publish_target` ");
$postsByPlatform = $postsByPlatform->fetchAll(PDO::FETCH_OBJ);
$return['Post']['publish_target'] = $postsByPlatform;
,得到了這樣的結果:
publish_target: [
{
value: "22",
key: "facebook"
},
{
value: "33",
key: "googleplus"
},
{
value: "44",
key: "instagram"
},
{
value: "55",
key: "other"
},
{
value: "66",
key: "twitter"
}
],
我們現在轉換到Mongo。
我曾嘗試在PHP.net的例子,適應這樣的:
// use all fields
$keys = array('publish_target');
// set intial values
$initial = array("count" => 0);
// JavaScript function to perform
$reduce = "function (obj, prev) { prev.count++; }";
// only use documents where the "a" field is greater than 1
$g = $collection->group($keys, $initial, $reduce);
var_dump($g);
但這只是返回
array(4) {
'retval' =>
array(1) {
[0] =>
array(1) {
'count' =>
double(100)
}
}
'count' =>
double(100)
'keys' =>
int(1)
'ok' =>
double(1)
}
這對我毫無意義。
如何正確執行此操作?
可以使用聚合框架:'分貝。 '很容易翻譯成PHP,其中一個是 – Sammaye
試過: $ collection = $ this- > mongoDB->發佈; ('$ sum'=> 1)))); $ array = $ array => array('_id'=>'$ publish_target','value'=> array('$ sum'=> 1)))); 輸出結果不是很好。陣列(3){ 'ERRMSG'=> 串(11) 「沒有這樣的CMD」 '壞CMD'=> 陣列(2){ '骨料'=> 串(4) 「後」 '管道」 =>數組 (1){ '$組'=>數組 (2){... } } } 'OK'=> 雙(0) } – azz0r
嗯你可能運行一箇舊的mongodb版本,如果它說沒有集合命令,其中anh說這是因爲你沒有在那裏 – Sammaye