javascript - 如何编写带有 M/D/YYYY 格式日期条件并存储为字符串的查找查询

标签 javascript node.js mongodb

我的集合中有两个字段,如下所示

{
    "StartDate" : "1/2/2019",
    "EndDate" : "5/14/2019"
}

我想编写一个查找查询来获取当前日期的文档 示例 db.collection.find({StartDate:{$lte: '5/9/2019'},EndDate:{$gte:'5/10/2019'}})

但是这里'5/14/2019' >= '5/9/2019'这个条件返回 false '5/14/2019' >= '5/9/2019' 返回 true

我不明白为什么会发生这种情况,我无法使用 MM/DD/YY 格式,我必须坚持使用 M/D/YYYY 格式

请为我提供更好的解决方案,提前致谢

最佳答案

正如评论中所澄清的,两个日期都是简单的字符串。为了对它们使用逻辑运算符,您必须首先使用 aggregation 将它们转换为 ISODate 对象。像这样的管道:

db.collection.aggregate([{
    "$addFields": {
        "StartDateISO": {
            "$dateFromString": {
                "dateString": "$StartDate",
                "format": "%m/%d/%Y"
            },
        },
        "EndDateISO": {
            "$dateFromString": {
                "dateString": "$EndDate",
                "format": "%m/%d/%Y"
            }
        },
        "queryStartDateISO": {
            "$dateFromString": {
                "dateString": "5/9/2019",
                "format": "%m/%d/%Y"
            }
        },
        "queryEndDateISO": {
            "$dateFromString": {
                "dateString": "5/10/2019",
                "format": "%m/%d/%Y"
            }
        },
    }
}, {
    "$match": {
        "$expr": {
            "$and": [
                {"$lte": ["$StartDateISO", "$queryStartDateISO"]},
                {"$gte": ["$EndDateISO", "$queryEndDateISO"]}
            ]
        }
    }
}])

它将在 MongoDB 4.0 及更高版本中工作。在我的测试中正确解析了日期:

"StartDate": "1/3/2019" 变为 "StartDateISO": "2019-01-03 00:00:00.000Z"

关于javascript - 如何编写带有 M/D/YYYY 格式日期条件并存储为字符串的查找查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56058728/

相关文章:

javascript - 如何从数据库中保留段落分隔符和缩进?

javascript - 无法理解 Node.js 中的错误

node.js - HaProxy + docker运行状况检查会重启死容器

javascript - Mongoose ,nodejs,全文搜索

javascript - 为什么 JavaScript 中的 for 循环内的提示()不适用于我下面的代码?

javascript - Gamedesign "group"用于静音和取消静音的 html5 音频元素

javascript - 发布二进制代码无法从 Jquery ajax 工作

node.js - Firebase 函数不使用 express.js 和 EJS View 引擎提供静态文件

mongodb - 如何通过命令查找mongodb数据和日志文件位置?

mongodb - 使用带有 id 内部聚合 mongodb 的数组上的 where