我如何使用 pymongo 通过单个请求找到最近的日期?日期应该最接近当前日期

How I can find closest date by single request using pymongo? Date should be closest to Current Date

数据集:

{"_id":{"$oid":"61e038a052124accf41cb5e4"},"event_date":{"$date":{"$numberLong":"1642204800000"}},
"name":"UFC Fight Night","event_url":"https://www.tapology.com/fightcenter/events/82805-ufc-fight-night","location":"Las Vegas, NV"}
{"_id":{"$oid":"61e038a252124accf41cb5e5"},"event_date":{"$date":{"$numberLong":"1642809600000"}},"name":"UFC 270","event_url":"https://www.tapology.com/fightcenter/events/82993-ufc-270","location":"Anaheim, CA"}
{"_id":{"$oid":"61e038a252124accf41cb5e6"},"event_date":{"$date":{"$numberLong":"1644019200000"}},"name":"UFC Fight Night","event_url":"https://www.tapology.com/fightcenter/events/83125-ufc-fight-night","location":"Las Vegas, NV"}

我正在使用 python,这意味着我无法在 Mongo 数据库的代码中使用 $commands 来查找我需要的集合。问题是如何找到日期时间值最接近当前日期的对象。据我了解,我必须使用 python 的 datetime.now() 来设置当前日期并进行比较($currentDate 不适用于 Python)。但是但是为了比较值,我必须反序列化对象,这看起来很重。默认情况下 Mongo 使用 ISO 日期时间类型。
你能帮助我吗?至少让我走上正确的方向?

这是一个聚合解决方案

db.collection.aggregate([
  {
    "$addFields": {
      "dateDiff": {
        "$abs": {
          "$subtract": [
            "$event_date",
            {
              "$literal": new Date()
            }
          ]
        }
      }
    }
  },
  {
    "$sort": {
      "dateDiff": 1
    }
  }
])
  • 我用$subtract来区别今天event_date
  • $abs就是要有绝对值。拥有最亲近的未来或过去。
  • 然后我们只需要按 dateDiff
  • 排序

在您的代码中,您必须替换 new Date()

试一试here