gpt4 book ai didi

mongodb 在每个文档中找到三个键的最旧日期

转载 作者:可可西里 更新时间:2023-11-01 10:36:52 25 4
gpt4 key购买 nike

我有一个如下所示的文档架构:

{
status: String,
estimateDate: Date,
lostDate: Date,
soldDate: Date,
assignedDate: Date
}

有了这个模式,所有三个日期都可以存在,也可以都不存在。我需要对所有三个进行检查,如果至少存在一个,则使用最早的日期,如果不存在,则使用今天的日期。使用“返回”日期,获取与另一个键(assignedDate)的天数差异。我已经想出如何用一个日期做我想做的事,但不知道如何扩大它以包括所有三个键。下面是我的一个键的工作代码。

在我的聚合管道 $project 阶段中,我执行以下操作:

days: {
$cond: {
if: {
$not: ["$date1"]
},
then: {
$floor: {
$divide: [
{
$subtract: [new Date(), "$assignedDate"]
},
1000 * 60 * 60 * 24
]
}
},
else: {
$floor: {
$divide: [
{
$subtract: [
"$estimateDate",
"$assignedDate"
]
},
1000 * 60 * 60 * 24
]
}
}
}
}

最佳答案

您可以使用 $min$ifNull如果这些日期中的任何一个不存在,则获取最旧日期的运算符将 new Date() 指定为默认值:

db.col.aggregate([
{
$project: {
oldest: {
$min: [
{ $ifNull: [ "$lostDate", new Date() ] },
{ $ifNull: [ "$soldDate", new Date() ] },
{ $ifNull: [ "$assignedDate", new Date() ] },
]
}
}
}
])

关于mongodb 在每个文档中找到三个键的最旧日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55661327/

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