问个mongoose查询的问题

我在开发中遇到一个问题。大概情况是这样的。
我需要查询一个月的数据,前端需要的返回的数据格式是这样的:

[
  "2014-11-08":[
     {数据2},{数据2},  ....  
  ],
  "2014-11-09":[
     {数据2},{数据2},{数据3}  ....  
  ]
]

就是相同的日期能够进行归类,只能手动拼这种格式出来么?有没有更加灵活的办法,求大神指点....^_^

阅读 3.7k
2 个回答

Model#aggregate 可以很大程度的简化你的代码(当然,是以牺牲 mongodb 性能为代价的)。

var dataSchema = mongoose.Schema({
    date: String, // 日期字符串
    value: {}     // 里面放着需要的数据
});

var Data = mongoose.model('Data', dataSchema);
Data.aggregate([
    { $match: { /* 查询条件 */ } },
    { $group: {
        _id: "$date",
        values: { $push: "$value" }
    }}
], function(err, results) {
    if (err) { /* 错误处理 */ }

    // 返回的格式是
    //   [
    //     { _id: "2014-11-08", values: [ {数据1}, {数据2} ] },
    //     ...
    //   ]
    res.send(results);
});

group是用来做聚合的,不是做查询后分组用的。你的这种情况,最好的方式还就是手动拼出这个对象的结构。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题