node.js - 问个mongoose查询的问题
怪我咯
怪我咯 2017-04-17 11:24:21
[Node.js讨论组]

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

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

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(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是用来做聚合的,不是做查询后分组用的。你的这种情况,最好的方式还就是手动拼出这个对象的结构。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号