gpt4 book ai didi

node.js - mongodb 中的日期操作和比较

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:13 26 4
gpt4 key购买 nike

我有一个具有以下属性的文档

{
_id: '1234',
daysToExpire: 7,
createdOn: 2018-10-16 08:06:19.856 (stored as a date in mongo)
}

我正在尝试编写一个聚合,表示

伪代码:

is the current date > $createdOn + $daysToExpire

我认为最好的方法是将 $createdOn 转换为数字,然后添加 1000 * 60 * 60 * 24 * $daysToExpire

我尝试了以下方法,但不起作用

$match: {
createdOn: {
$gt: [{ $add: ['$createdOn', '$daysToExpire']}, '$currentDate']
}
}

$match: {
createdOn: {
$gt: { $subtract: ['$currentDate', '$daysToExpire' ] }
}
}

最佳答案

从技术上讲,您需要 $match$expr执行一些过滤计算。在 $expr 内部你可以使用 $add如果第一个参数是 ISODate,则将第二个参数视为毫秒数。下面的代码适用于 4.0:

db.col.aggregate([
{
$match:{
$expr: {
$gt: [ new Date(), // now as ISODate
{
$add: [
"$createdOn",
{ $multiply: [ "$daysToExpire", 1000 * 60 * 60 * 24 ] }
]
}
]
}
}
}
])

关于node.js - mongodb 中的日期操作和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53107376/

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