如何在jade中显示聚合的结果

时间:2014-02-16 01:09:55

标签: javascript node.js mongodb pug

如何使用node.js,express& amp;显示mongodb聚合查询的结果?玉

我不确定我做错了什么,或者即使这是正确的方法。

当我尝试访问该页面时 - 它只是超时?

有什么想法吗?或者有更好的方法吗?

app.js

 var mongo = require('mongodb');
 var monk = require('monk');
 var db = monk('localhost:27017/soundevents');
 var timeroute = require('./routes/timers');

 app.get('/time/starttimer', timeroute.starttimer);

我的路线/ timers.js看起来像这样:

 exports.starttimer = function(db) {
return function(req, res) {
    var aEvent = db.get('event');

    aEvent.aggregation([{$group:{_id:{"EventName":"$EventName"}}}],{}, function(e,docs) {
        res.render('time/starttimer', {title: 'Stat Timer',
         "eventlist" : docs});
    });

};

};

来自mongo的输出

db.event.aggregate([{$group:{_id:{"EventName":"$EventName"}, UpdateTime:{$max: "$UpdateTime"}}}])


{"result" : [{"_id" : {
"EventName" : "MtnBikeRace 1"},
"UpdateTime" : 1392265180.069293},
{"_id" : {
"EventName" : "Student League"},
"UpdateTime" : 1392047321724}],
"ok" : 1}

2 个答案:

答案 0 :(得分:0)

此示例可以帮助您。 https://github.com/visionmedia/express/blob/master/examples/jade/index.js

// Dummy users
var users = [
    new User('tj', 'tj@vision-media.ca')
  , new User('ciaran', 'ciaranj@gmail.com')
  , new User('aaron', 'aaron.heckmann+github@gmail.com')
];

app.get('/', function(req, res){
  res.render('users', { users: users });
})
// user.jade
extends ../layout

block content
  h1 Users
  #users
    for user in users
      .user
         h2= user.name
         .email= user.email

答案 1 :(得分:0)

我在这里登陆是因为我正在寻找一种使用和尚来汇总结果的方法。

供将来参考:截至目前,僧侣没有.aggregate()方法,因此您的部分代码将无效(正如您在评论中指出的那样):

// there's no aggregation method.
aEvent.aggregation([{$group:{_id:{"EventName":"$EventName"}}}],{}, function(e,docs) {
                res.render('time/starttimer', {title: 'Stat Timer',
                 "eventlist" : docs});
            });

然而, this answer显示了与monk执行聚合的正确方法。它使用底层的本机驱动程序。在您的情况下,这将类似于以下内容:

aEvent.col.aggregate([{$group:{_id:{"EventName":"$EventName"}}}],{}, function(e,docs) {
        res.render('time/starttimer', {title: 'Stat Timer',
         "eventlist" : docs});
    });

如果你这样聚合,我想你可以接受fundon's answer