您的位置:首页 > 数据库 > Mongodb

mongodb c driver执行mongo_run_command求sum

2014-03-25 15:25 411 查看
不使用mapreduce,没有必要,低,也无法取到结果。改为使用aggregate。代码如下:

bson cmd[1];
bson out[1];
bson_init(cmd);
bson_append_string(cmd, "aggregate", "mytable");

bson_append_start_array(cmd, "pipeline");
bson_append_start_object(cmd, "0");
bson_append_start_object(cmd, "$group");
bson_append_null(cmd, "_id");
//bson_append_string(cmd, "_id", "null");
bson_append_start_object(cmd, "sum");
bson_append_string(cmd, "$sum", "$a_price");
bson_append_finish_object(cmd);
bson_append_finish_object(cmd);
bson_append_finish_object(cmd);

bson_append_start_object(cmd, "1");
bson_append_start_object(cmd, "$project");
bson_append_int(cmd, "_id", 0);
bson_append_int(cmd, "sum", 1);
bson_append_finish_object(cmd);
bson_append_finish_object(cmd);

bson_append_finish_array(cmd);

bson_finish(cmd);
bson_print(cmd);

const int result = mongo_run_command(conn, "mydb", cmd, out);


最关键的是,数组的概念,如代码上面所示的数组元素0和数组元素1,这是个大坑,没有它们,就无法取得预期结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: