当前位置:  开发笔记 > 编程语言 > 正文

Mongodb查询.如何找到最接近当前日期?

如何解决《Mongodb查询.如何找到最接近当前日期?》经验,为你挑选了1个好方法。

我有这样的集合:

{
    "_id" : ObjectId("963fae9d93f4d930c98e269d"),
    "myDate":ISODate("2017-02-05T05:00:00.000Z"),
    "otherData":"blablabla"
},
{
    "_id" : ObjectId("963fae9d93f4d930c98e269d"),
    "myDate":ISODate("2017-02-05T14:00:00.000Z"),
    "otherData":"blablabla"
},
{
    "_id" : ObjectId("963fae9d93f4d930c98e269d"),
    "myDate":ISODate("2017-03-05T02:00:00.000Z"),
    "otherData":"blablabla"
},
{
    "_id" : ObjectId("963fae9d93f4d930c98e269d"),
    "myDate":ISODate("2017-03-05T19:00:00.000Z"),
    "otherData":"blablabla"
}

给定当前日期(分钟和秒),我想找到最接近当前日期的记录(通过"myDate"字段).

谢谢



1> ares..:

您可以使用当前日期减去集合中的日期,取差异的绝对值以考虑将来的日期,然后使用排序和限制来获取最近的文档:

db.a.aggregate([
{
    $project : {
        myDate : 1,
        otherData : 1,
        difference : {
            $abs : {
                $subtract : [new Date(), "$myDate"]
            }
        }
    }
},
{
    $sort : {difference : 1}
},
{
    $limit : 1
}
])

$project如果需要difference输出文档中的字段,可以使用其他字符.此外,您可以使用任何其他日期而不是当前日期,并找到该日期的最近日期.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有