Mongoose 聚合返回空结果并在 mongo 控制台中工作 [重复]
Posted
技术标签:
【中文标题】Mongoose 聚合返回空结果并在 mongo 控制台中工作 [重复]【英文标题】:Mongoose aggregate return empty result and working in mongo console [duplicate] 【发布时间】:2016-07-14 10:05:54 【问题描述】:堆栈: + Mongoose 4.4.10(最后一个稳定版本)已经用旧版本测试过 + MongoDb 2.6.3
我在 mongodb 控制台中执行该函数,并成功重新
db.activities.aggregate(
$match : 'organizer': ObjectId("5408e4609640de8768c1d212")
, $group :
_id : "$organizer",
totalSwims: $sum : 1 ,
longestSwim : $max: "$distance" ,
moreDistanceSwim : $max: "$duration" ,
warmestWaterSwim : $max: "$activityWeather.waterTemperature" ,
coldestWaterSwim : $min: "$activityWeather.waterTemperature" ,
warmestSwim : $max: "$activityWeather.temperature" ,
coldestSwim : $min: "$activityWeather.temperature" );
"_id" : ObjectId("5408e4609640de8768c1d212"), "totalSwims" : 50, "longestSwim" : 6512.997, "moreDistanceSwim" : "02:35", "warmestWaterSwim" : "22", "coldestWaterSwim" : " 22", "warmestSwim" : "15", "coldestSwim" : "15"
但是如果我尝试通过 mongoose 总是返回一个空数组 [] 我已经有一些聚合函数运行良好,但不知道为什么那个不起作用。
activities.aggregate([
$match : 'organizer': userId ,
$group :
_id : "$organizer",
totalSwims: $sum : 1 ,
longestSwim : $max: "$distance" ,
moreDistanceSwim : $max: "$duration" ,
warmestWaterSwim : $max: "$activityWeather.waterTemperature" ,
coldestWaterSwim : $min: "$activityWeather.waterTemperature" ,
warmestSwim : $max: "$activityWeather.temperature" ,
coldestSwim : $min: "$activityWeather.temperature"
]
, function(err, result)
if (err)
console.error('Problem %s', err);
return next(err);
else
console.error('Result %j', result);
return next(null, result);
);
有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:对不起,在没有任何相关结果之前搜索了一段时间后,我终于弄明白了。它接缝的是,就这种情况而言,我需要使用 ObjectId 方法确保 id 而不是只发送一个字符串。
var ObjectID = require("mongodb").ObjectID;
activities.aggregate([
$match : 'organizer': ObjectID(userId) ,
【讨论】:
有大量重复项(以及 GitHub 上的一个大问题)。所以这不是一个很难的搜索。另外,如果您打算自己回答,请同时进行,不要“先发布”然后“稍后回答”,因为这看起来像是在问“真正的问题”。有一个特定选项可以在您发帖时包含您的“自我回答”。 您也弄错了,因为不需要引入单独的依赖项。 Mongoose 构建在 mongodb 驱动程序之上。所以依赖关系已经存在,并以不同的方式访问。在Moongoose aggregate $match does not match id's中查看正确方法 感谢您的反馈 Blakes,我无意在这里发送垃圾邮件,我会尽快查看您的反馈,非常感谢。 谢谢!你是救生员。以上是关于Mongoose 聚合返回空结果并在 mongo 控制台中工作 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB Mongoose 聚合查询深度嵌套数组删除空结果并填充引用