gpt4 book ai didi

MongoDB 聚合 : $Project (how to use a field on the other field of the same projection pipeline)

转载 作者:可可西里 更新时间:2023-11-01 09:47:35 25 4
gpt4 key购买 nike

这就是我希望我的聚合管道看起来的样子,我只是不知道如何正确地去做

db.Collection.aggregate([
{
$project: {
all_bills: ‘$all_count’,
settled_bills: { $size: ’$settled’ },
overdue_bills: { $size: ‘$overdue’ },
settled_percentage: { $divide: [‘$settled_bills’, ‘$overdue_bills’] }
}
}
])

我想在同一投影管道上使用“settled_percentage”字段内的“settled_bills”和“overdue_bills”字段。怎么办?

最佳答案

据我所知,我想你想要$let

您可以创建可在 $let 表达式中使用的局部变量。

试试这个:

db.Collection.aggregate([
{
$project: {
all_bills: ‘$all_count’,
settled_bills: { $size: ’$settled’ },
overdue_bills: { $size: ‘$overdue’ },
settled_percentage: {
$let : {
vars : {
local_settled_bills : { $size : "$settled"},
local_overdue_bills : { $size : "$overdue"}
},
in : {
$divide : ["$$local_settled_bills","$$local_overdue_bills"]
}
}
}
}
}
])

在这里,您在 vars 表达式中创建局部变量,它可以在内部使用(并且只能在 in 表达式内部)。我创建了 local_settles_billslocal_overdue_bills,它们可以用在 in 表达式中,以 $$ 作为前缀。

希望对您有所帮助。

阅读MongoDb $let documentation有关 $let 的详细信息。

或者,您也可以这样做:

db.Collection.aggregate([
{
$project: {
all_bills: ‘$all_count’,
settled_bills: { $size: ’$settled’ },
overdue_bills: { $size: ‘$overdue’ },
settled_percentage: {
$divide : [{"$size" : "$settled_bills"},{"$size":"$overdue_bills"}]
}
}
}
])

关于MongoDB 聚合 : $Project (how to use a field on the other field of the same projection pipeline),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55114064/

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