1

mongoDB でグループ クエリを実行しようとしていますが、間違った結果が得られ、微調整しても問題は解決しません。

次のスキーマを持つコレクションがあります (action_ はカウンターです)

"_id": ObjectId(""),
"action_1": 3,
"action_2": 2,
"action_4": 0,
"shop": ObjectId(""),
"user": ObjectId(""),
"action_3": 33 

各ユーザーがすべてのショップのすべてのカウンターを合計する必要があり、これを実行しました。

$keys = array("action_1"=>1, "action_2"=>1, "action_3"=>1, "action_4"=>1); 
$initial = array("action_1"=>0, "action_2"=>0, "action_3"=>0, "action_4"=>0); 
$reduce = "function (obj, prev) { 
    prev.action_1 += obj.action_1; 
    prev.action_2 += obj.action_2; 
    prev.action_3 += obj.action_3; 
    prev.action_4 += obj.action_4; 
}";
$condition = array('user' => $user_id);
$g = $collection->group($keys, $initial, $reduce, $condition);

得られる結果は、値を抽出するドキュメントの配列です。連想配列の配列が必要で、すべてのユーザーが次のようなものを持っている必要があります。

array ("user") {
    action_1 => sum, //integer
    action_2 => sum,
    action_3 => sum,
    action_4 => sum
}
4

1 に答える 1

0

user代わりにキーでグループ化する必要があります。

$keys = array("user"=>1);
于 2012-05-06T11:19:41.023 に答える