MongoDB:如何查找日期格式为字符串2021-04-04 12:40:05的文档
我试图在MongoDB中的日期字段中查找文档,但有些文档包含如下日期字符串MongoDB:如何查找日期格式为字符串2021-04-04 12:40:05的文档,mongodb,date,find,Mongodb,Date,Find,我试图在MongoDB中的日期字段中查找文档,但有些文档包含如下日期字符串2021-04-04 12:40:05,使用查询无法找到它们。其他文档包含正确的格式,我可以这样选择它们 const today = new Date(); pastDate = today.setDate(today.getDate() - 10); console.log(pastDate); const transactions = await transactionMongoModel.find({ creatio
2021-04-04 12:40:05
,使用查询无法找到它们。其他文档包含正确的格式,我可以这样选择它们
const today = new Date();
pastDate = today.setDate(today.getDate() - 10);
console.log(pastDate);
const transactions = await transactionMongoModel.find({ creationTime: { $lt: pastDate } })
.select({ _id: 1, creationTime: 1 })
.sort({ creationTime: -1 })
.limit(100);
但此查询不会返回创建时间按此方式格式化的文档。
2021-04-04 12:40:05
如何查找它们?第一个日期不应存储为字符串,最好先在mongo中批量更新日期字段
但若时间结束,您可以使用运算符首先转换为日期格式,然后进行比较
transactionMongoModel.aggregate([
{ "$addFields": {
"date": {
"$dateFromString": {
"dateString": "$creationTime"
}
}
}},
{ "$match": { "date": { "$lt": pastDate.toDate() }}},
{"$project": {"date":0, "_id": 1, "creationTime" : 1}}
])
日期/时间不应存储为字符串,这是一个设计缺陷。始终存储正确的
日期
对象。用于将字符串转换为日期
对象。您可以比较相同类型的数据。如果您知道某些数据的格式不同,然后在比较时使用聚合日期/字符串运算符进行转换。我不是这样保存的。这只是一个错误,有许多记录,现在试图在一个查询库中查找它们,以获得帮助,但我遇到了以下错误TypeError:pastDate.toDate不是一个函数
pastDate的值是多少?。如果无效,toDate很可能会抛出errorpastDate:1618149772740作为时间戳!需要将时间戳转换为日期new date(passdate)
{$match:{date:{$lt:new date(passdate)}}},
并获得MongoError:Invalid$project::cause by::Cannot do inclusion on field creationTime in exclusion projection