获取空值,$sum 聚合 - Mongo

Posted

技术标签:

【中文标题】获取空值,$sum 聚合 - Mongo【英文标题】:Getting null, $sum aggregate - Mongo 【发布时间】:2018-09-22 19:31:49 【问题描述】:

谁能告诉我为什么我在尝试按 vendorID 汇总广告系列集合中的预算值时得到 []?

这是我在数据库中的文档t - Campaign Collection


"_id" : ObjectId("5acf6ca923cdca5be18518cf"),
"vendorID" : ObjectId("5acf11eaeab7b52d8403ac17"),
"bookingID" : ObjectId("5acf6c9123cdca5be18518ce"),
"listingID" : ObjectId("5acf6c4d23cdca5be18518cd"),
"budget" : 200000,
"date" : "Thu Apr 12 2018 17:26:49 GMT+0300 (EAT)",
"__v" : 0

这是我正在使用的 router

router.get('/campaign_sum/:vendorID', (req, res, next) => 
Campaign.aggregate([
     $match :  "vendorID" : req.params.vendorID  ,
     
        $group: 
            _id: null,
            total:  $sum: "$budget" 
        
    
], (err, value) => 
    res.json(value);
);
);

【问题讨论】:

在将它传递给聚合函数之前尝试在 ObjectId 中转换您的 id 我该怎么办? 像这样:_id: new ObjectId(id) 我得到这个 ObjectId 没有定义 在添加上述代码之前,您需要导入模块:ObjectId = require('mongodb'); 【参考方案1】:

首先需要像这样的猫鼬:

var Mongoose = require('mongoose');

然后使用:

 $match :  "vendorID" :  Mongoose.Types.ObjectId(req.params.vendorID) 

代替:

 $match :  "vendorID" : req.params.vendorID  

【讨论】:

以上是关于获取空值,$sum 聚合 - Mongo的主要内容,如果未能解决你的问题,请参考以下文章

通过 mongo 聚合管道使用 $match 两次

使用不同 WHERE 子句获取聚合的子查询

你如何从 Mongo 日期字段中获取 DayHours?

你如何从 Mongo 日期字段中获取 DayHours?

mongo聚合添加日期和总和

Django:获取两个相乘列的聚合值