繁体   English   中英

猫鼬:获取具有聚合的对象数组的大小

[英]Mongoose: get the size of an array of objects with aggregate

我的收藏夹中有一个文件:

{
"_id" : ObjectId("5b8aaaebf57de10e080c9151"),
"user_email" : "temp@temp.com",
"platforms_budget" : [ 
    {
        "_id" : ObjectId("5b8aaaebf57de10e080c9154"),
        "platform_id" : "f_01",
        "platform_name" : "Facebook"
    }, 
    {
        "_id" : ObjectId("5b8aaaebf57de10e080c9153"),
        "platform_id" : "i_01",
        "platform_name" : "Instagram"
    }, 
    {
        "_id" : ObjectId("5b8aaaebf57de10e080c9152"),
        "platform_id" : "f_02",
        "platform_name" : "Facebook_Adds"

    }
],
"__v" : 0

}

我想通过“ user_email”查找特定用户,并获取相关“ platform_budget”数组的长度。 在这种情况下,假定为length = 3。

我的功能是这样的:

var BudgetSchema = require('../models/Budget');

  router.post('/temp', async function (req, res) {
  var length = await BudgetSchema.aggregate(
    [{ $match: { user_email: "test@test.com" } }, { $unwind: "$platforms_budget" },
    { $project: { "platforms_budget.count": { $size: '$platforms_budget' } } }])

  console.log(length);
})

当我尝试console.log(length)时,我得到一个空数组。

我看到像计算器其他答案这一个 ,但我还是不明白我在做什么错误或如何提取从性反应的大小。

如何获得“ platforms_budget”数组大小? 谢谢。

假设../models/Budget导出一个Model ,则Model#aggregate(Array,Function)期望将带有聚合的管道作为一个数组,并将一个可选的回调函数传递给错误(如果有)和结果(如果有) 。

.aggregate([...], function(error, resource) {
    // do what you want here
});

或者,您也可以使用Aggregate对象本身,并在函数也是回调的情况下对其调用.exec(Function)

.aggregate([...]).exec(function(error, resource) {
    // do what you want here
});

我个人对.aggregate(Array, Function) 的文档仍然有些困惑。

如果传递了回调,则将执行汇总并返回Promise。 如果未传递回调,则返回聚合本身。

听起来像是如果传递了回调,则仍会返回诺言,但是我找不到任何证据证明GitHub上的 .aggregate(Array, Function)返回的.aggregate(Array, Function)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM