以下代码段遇到的问题是$ cond运算符似乎不起作用。当我将其完全替换为值8时,它就像一种魅力。注意:我只是想看看$ cond如何与$ gt一起工作。最终,布尔条件将与$ group中的日期字段有关(我将尝试检查日期是否为工作日)。
db.getCollection("intervals-time").aggregate([
{
$addFields: {
convertedTime: {
$toDouble: "$time"
}
}
},
{
$group: {
_id: {
personid: "$personid",
date: {
month: { $month: "$date" },
day: { $dayOfMonth: "$date" },
year: { $year: "$date"}
}
},
total: {
$sum: "$convertedTime"
},
}
},
{
$match: { total: { $gt : {$cond:[true,8,5]}}}
}])
答案 0 :(得分:1)
您需要使用$expr
来实现
{ "$match": { "$expr": { "$gt": ["$total", { "$cond": [true, 8, 5] }] }}}
答案 1 :(得分:1)
不能在$ match运算符内使用$ cond。 $ match仅用于过滤文档,而使用$ cond时,您将根据某些条件设置/更改某些值。可以在$ project操作中使用$ cond,而不能在$ match中使用。