gpt4 book ai didi

node.js - 如何比较 MongoDB(NodeJS + Mongoose )中的日期?

转载 作者:可可西里 更新时间:2023-11-01 10:08:21 24 4
gpt4 key购买 nike

我在 MongoDB 中有一些数据,我想比较存储在其中的两个日期之间的日期。问题是当我在查询中使用 $gte 或 $lte 时它总是返回 null。

架构:

const SettingSchema = new Schema({
advertisment: [
{
name: {
type: String,
required: true
}
,
fromdate: {
type: Date,
default: Date.now()
}
,
todate: {
type: Date
}
,
active:{
type:Boolean
}
}
]});

示例数据:

{
"advertisment": [
{
"fromdate": "2010-06-29T06:53:32.643Z",
"_id": "5d170b634ebf4d1848efbe9a",
"name": "ads1",
"todate": "2030-06-29T09:38:32.643Z",
"active": true
},
{
"fromdate": "2010-06-29T06:53:32.643Z",
"_id": "5d170baae38bc832c4d89d9a",
"name": "ads2",
"todate": "2030-06-29T09:38:32.643Z",
"active": true
}
]
}

查询:

let currentDate = new Date();

Setting.findOne(
{
"advertisment.active": true,
"advertisment.fromdate": { $gte: currentDate },
"advertisment.todate": { $lte: currentDate },
},
'advertisment')
.then(data =>
{
console.log(data);
})
.catch(err => console.log(err))

如何在 MongoDB (mongoose) 中比较这些日期?

最佳答案

使用

new Date().toISOString()

代替

new Date()

尝试:

let currentDate = new Date().toISOString();

Setting.findOne(
{
"advertisment.active": true,
"advertisment.fromdate": { $gte: currentDate },
"advertisment.todate": { $lte: currentDate },
},
'advertisment')
.then(data =>
{
console.log(data);
})
.catch(err => console.log(err))

关于node.js - 如何比较 MongoDB(NodeJS + Mongoose )中的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815927/

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