从聚合管道MongoDB中将json剥离到数组

时间:2014-08-19 10:05:27

标签: aggregation-framework

我正在执行一个聚合,以便有一个数组来提供标签建议,在客户端我使用类似插件的类型。

主要的想法是直接从服务器端发送已排序的数组,因此浏览器不会在"剥离"杰森。

到目前为止我得到了这个

    suggestion.aggregate([
        {$match  : {}},
        {$sort : { 'pop' : -1 } },
        {$limit:10000},
        {$project : { _id: 0,tag : 1 } }
    ],  
    function (err,tags) {
      if (err) {
        return next(err);
      }
      if (req.xhr) {
        res.send(tags);
        tags=[];
        return;
      }
      res.send(tags); 
      tags=[];
    }
  );

发送像这样的Json:

[
  {
    "tag": "news"
  },
  {
    "tag": "tech"
  },
  {
    "tag": "sports"
  },
  ....
]

我想从服务器发送类似这样的东西(避免map reduce或forEach函数):

 [
    "news",
    "tech",
    "sports",
    ...
 ]

1 个答案:

答案 0 :(得分:0)

您可以在管道末尾添加一个组操作符来实现此目的:

suggestion.aggregate([
        {$match  : {}},
        {$sort : { 'pop' : -1 } },
        {$limit:10000},
        {$project : { _id: 0,tag : 1 } },
        {$group:{"_id":null,"tagArray":{$push:"$tag"}}}
    ])