【发布时间】:2015-07-02 22:05:10
【问题描述】:
我正在使用 AngularJS、NodeJS 和 Mongoose 编写应用程序。 现在,我正在做一个图表,我需要返回一些传递一些参数的数据。 但是聚合不起作用。我有这个查询在 MongoDB 中工作:
var user = db.getCollection('users').find(
{profile: "SUPERVISOR"},{_id: 1}).map(function(u){return u._id;}
)
db.getCollection("visitas").aggregate(
{ '$match':
{ createdAt:
{ '$gte': ISODate('2015-01-10T00:00:00.000Z'),
'$lt': ISODate('2015-07-01T00:00:00.000Z') } } }, { '$group':
{ _id: { usuario: user, dia: [Object] },
visitas: { '$sum': 1 } } }
)
当我尝试使用 Mongoose 在我的应用程序中运行相同的查询时,该查询不起作用。我看到的问题是 MATCH 和 GROUP 之间的逗号消失了。当我尝试仅使用组或匹配进行搜索时,查询有效。有人可以帮助我吗?这是应用程序代码:
.then(function (listaUsuarios){
var argsVisit;
console.log({ $match : { "createdAt" : { $gte: "2015-01-10T00:00:00.000Z", $lt: "2015-07-01T00:00:00.000Z" }} },
{ $group : { _id : { "usuario" : listaUsuarios , "dia" : { $dayOfMonth : "$createdAt" } }, "visitas" : { $sum : 1 } } });
Visita.aggregate({ $match : { "createdAt" : { $gte: "2015-01-10T00:00:00.000Z", $lt: "2015-07-01T00:00:00.000Z" }} },
{ $group : { _id : { "usuario" : listaUsuarios , "dia" : { $dayOfMonth : "$createdAt" } }, "visitas" : { $sum : 1 } } })
.exec(function (err, results) {
if (err) {
console.log("Erro!!!");
deferredDados.reject({
error: 500,
message: 'Erro buscando Visita, erro: '+err
});
} else {
if (!results || results.length == 0) {
console.log("Sem retorno!!!");
deferredDados.resolve( [0,0,0,0,0,0,0] ); //Tudo zerado poruqe não há retorno.
//deferredDados.resolve(0);
deferredDados.reject({
error: 500,
message: 'Erro buscando Visitas, não achou resultados'
});
} else {
console.log("Dados"+results);
deferredDados.resolve( results );
//deferredDados.resolve( results.data] );
}
}
});
return deferredDados.promise;
})
【问题讨论】:
标签: angularjs node.js mongodb mongoose