0

フィールドpublish_targetでカウントをグループ化しようとしています

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)
}

それは私にとって何の意味もありません。

これを正しく行うにはどうすればよいですか?

4

1 に答える 1

1

これが問題かどうかはわかりませんが、自分のコードと比較すると、この行

$keys = array('publish_target');

このように見えるはずです

$keys = array('publish_target' => true);
于 2013-02-05T17:31:06.830 に答える