を使用してmongoデータセットの平均計算を実装しようとしていますが、この関数はCursorオブジェクトを返し、私が間違っていることを理解できません。PHP MongoDB集約が空に戻ります
このデータセットのコンテンツのサンプル:
{ word : "word", time : 1234, result : "pass" }
このパイプラインクエリはMongoのコンソールで動作します。
{"$group" :
{"_id" : "$result",
"meanTime" : {"$avg" :"$time"}
}
}
これは私のコードです:
public function getTimes($fields = array('correct','wrong','pass')){
$group = ['$group'=> ["_id" => '$result', "meanTime" => ['$avg' =>'$time']]];
$agg = $this->collection->aggregate(
[$group]
);
return $agg;
}
/*
//This is the var_dump on $agg
object(MongoDB\Driver\Cursor)#82 (2) {
["cursor"]=>
array(17) {
["stamp"]=>
int(0)
["is_command"]=>
bool(false)
["sent"]=>
bool(true)
["done"]=>
bool(false)
["end_of_event"]=>
bool(false)
["in_exhaust"]=>
bool(false)
["has_fields"]=>
bool(false)
["query"]=>
object(stdClass)#76 (0) {
}
["fields"]=>
object(stdClass)#74 (0) {
}
["read_preference"]=>
array(2) {
["mode"]=>
int(1)
["tags"]=>
array(0) {
}
}
["flags"]=>
int(0)
["skip"]=>
int(0)
["limit"]=>
int(0)
["count"]=>
int(2)
["batch_size"]=>
int(0)
["ns"]=>
string(23) "circular.intesavincente"
["current_doc"]=>
object(stdClass)#83 (2) {
["_id"]=>
string(4) "pass"
["meanTime"]=>
float(338)
}
}
["server_id"]=>
int(1)
}
//This is the json_encode output
{}
*/
私が試してみましたarray()
の構造と簡略化された[]
の両方を持つパイプラインアレイを書き込むには、結果は変わりません。私は間違っているの?ありがとう
ええ、私はちょうど、返されたオブジェクトが配列ではなくカーソルであることに気付きました。面白いのは、配列の上に同様のオブジェクトをその関数の上に数行だけ正しく配置することです。私はバルマーのピークが本当だと思う –