[英]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.