mongodb c driver执行mongo_run_command求sum

来源:互联网 发布:牛牛网络 编辑:程序博客网 时间:2024/06/10 04:12

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

0 0
原创粉丝点击