【发布时间】:2016-06-21 20:08:23
【问题描述】:
我有一个这样的模型:
var field = {
createdAt: {type: Date, default: Date.now()},
updatedAt: {type: Date, default: Date.now()},
pic : {type: String, default: 'http://lorempixel.com/400/400/abstract/', writable: true},
thumb : {type: String, default: 'http://lorempixel.com/100/100/abstract/', writable: true},
name: {type: String},
description: {type: String},
isPublic: {type: Boolean, default: true},
members: [{type: Schema.Types.ObjectId, ref: 'Member'}],
}
我使用下面的代码来获取成员字段中Member 的 ID 的总数。
Group.aggregate([
{$match: {_id:req.params.group_id}},
{$group: {
_id: '$members',
count: {$sum: 1}
}}
], function (err, count) {
res.send(count);
});
但它返回空数组[] 我如何获得正确的计数?
谢谢。
【问题讨论】:
-
Mongoose 不会在聚合管道中“自动转换”到
ObjectId。您需要自己进行投射,否则您的$match将不匹配。之前有人问过,让我搜索重复项。 -
同样在issue #1399
-
所以假设我得到了工作的
{$match},这会返回members的总数吗?谢谢@BlakesSeven
标签: node.js mongodb mongoose mongodb-query aggregation-framework