gpt4 book ai didi

javascript - Mongo 将 $slice 聚合到特定值而不是数组

转载 作者:可可西里 更新时间:2023-11-01 10:38:21 26 4
gpt4 key购买 nike

我的收藏中有一个文档:

  {
"_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”数组的长度。

我的函数是这样的:

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

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

console.log(length);
})

我得到的输出是:

[ { _id: 5b8aaaebf57de10e080c9151, count: 3 } ]

但我只想获取数字大小,如下所示:3。

我想要得到的输出是:

 3

我知道我可以使用 $slice运算符,但我不知道如何以正确的方式使用它。有任何想法吗?谢谢。

最佳答案

你的聚合应该是这样的

BudgetSchema.aggregate([
{ "$match": { "user_email": "test@test.com" } },
{ "$project": { "count": { "$size": "$platforms_budget" }}}
])

输出

[ { _id: "5b8aaaebf57de10e080c9151", count: 3 } ]

如果你想把它作为一个数组值

const budget = (await BudgetSchema.aggregate([
{ "$match": { "user_email": "test@test.com" } },
{ "$project": { "count": { "$size": "$platforms_budget" }}}
])).map(({ count }) => count)

输出

[3]

关于javascript - Mongo 将 $slice 聚合到特定值而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52139085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com