gpt4 book ai didi

mongodb - 如何在 mongodb 查询中比较两次?

转载 作者:行者123 更新时间:2023-12-04 09:47:58 26 4
gpt4 key购买 nike

我有两个字段 timeInarrivalTime在我的 mongodb 集合中。 timeIn 字段表示用户应该到达的时间,arrivalTime 表示实际到达时间。

timeIn:"2020-05-24T18:31:00.000Z",
arrivalTime:2020-05-27T02:36:37.558+00:00

我如何比较 timeInarrivalTime这样我就可以将那些在 timeIn 之后到达的人标记为“迟到”。
$project: {
name: 1,
isPresent: {
$cond: {
if: {
$lte: [ISODate("$arrivalTime"), ISODate("$timeIn")]
},
then: true,
else: false
}
}
}

最佳答案

如果您将日期存储为字符串,则可以比较两者(作为字符串),前提是您确保它们始终采用相同的格式和时区。

$project: {
name: 1,
isPresent: {
$cond: {
if: {
$lte: ["$arrivalTime","$timeIn"]
},
then: true,
else: false
}
}
}

话虽如此,不建议这样做,因为“确保”这样的事情我觉得不是一个好方法。那你还能做什么?
  • 将日期另存为 Date .这将需要您更新您的代码和数据库,但在我看来将是最好的长期解决方案。
  • 如果您使用的是 Mongo 3.6+ 版,您可以使用 Mongo 的 $dateFromString
  • $project: {
    name: 1,
    isPresent: {
    $cond: {
    if: {
    $lte: [{$dateFromString: {dateString: "$arrivalTime"}},
    {$dateFromString: {dateString: "$timeIn"}}]
    },
    then: true,
    else: false
    }
    }
    }

    关于mongodb - 如何在 mongodb 查询中比较两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62061008/

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