MongoDB总和返回0-聚合

MongoDB总和返回0-聚合,mongodb,Mongodb,我有以下疑问: Machine.aggregate([{"$group":{_id:"$cluster",sum:{"$sum":"$cores"}}}]).exec(function(err, agg) { if (err) { return res.status(400).send({ message: errorHandler.getErrorMessage(err)

我有以下疑问:

Machine.aggregate([{"$group":{_id:"$cluster",sum:{"$sum":"$cores"}}}]).exec(function(err, agg) {
            if (err) {
                    return res.status(400).send({
                            message: errorHandler.getErrorMessage(err)
                    });
            } else {

                res.json(agg);
            }
            });
返回:

[{"_id":"5","sum":0},{"_id":"","sum":0},{"_id":"4","sum":0},{"_id":"2","sum":0},{"_id":"3","sum":0},{"_id":"1","sum":0}]
下面是一些示例数据:有很多文档

[{"_id":"55d5dc40281077b6d8af1d9d","hostname":"1","domain":"domain","description":"VMWare ESXi 5","cluster":1,"type":"Physical","os":"EXSi","idc":"LH5","environment":"PROD-LH5","deviceclass":"host","cores":64,"memory":256,"mounts":[],"roles":["ESX-HOST"],"ipset":{"backnet":"10.83.48.30"},"frontnet":[],"created":"2015-09-10T13:51:06.062Z"},

当实际总数是数百(如果不是数千)时,为什么返回0?

核心不是架构中的数字。因此,我使用的是与我认为的不同的收藏。错误。

您的结果将集群显示为分组id中的字符串,其中文档为纯双精度值。因此,我很难相信您真的展示了一个真实的文档,最可能的原因是核心实际上也是一个字符串。此外,错误不是404而是真实错误,因此为500。404应该是结果数组为空的时候。@BlakesSeven-我使用的是一个平均框架,因此我的DB有一个模型。Cores一开始确实是一个字符串,但我相信我已经在模型和实际的DB中转换了它-我如何检查?与框架无关。检查mongodb shell中的实际数据。我认为您会发现导入的数据实际上显示了cores字段的字符串,而不是您声称的字符串。我的观点基本上是,您告诉我们集群字段不是字符串,但您的聚合结果告诉我们不是。这也是一个字符串。注意大小写与您在前面的注释db.Machines.find中引用的大小写不同{.如果该查询有效,那么实际上您有两个集合,因此可能是问题的原因。是的。mongoose选择小写的一个集合,它的核心是字符串。并且可能来自早期的数据导入。使用.mogoose.model'Machines',schemaDef,Machines显式使用固定集合。这就是为什么rep分数,正如我以前所看到的,聚合$sum到0总是意味着它是一个字符串,而mongoose模型命名错误意味着你选择了错误的集合。