sunyke 发表于 2015-11-10 14:18:46

mongodb c driver执行mongo_run_command求sum

  不使用mapreduce,没有必要,低,也无法取到结果。改为使用aggregate。代码如下:
  

bson cmd;
bson out;
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,这是个大坑,没有它们,就无法取得预期结果。
  

版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: mongodb c driver执行mongo_run_command求sum