gpt4 book ai didi

MongoDB - 在几小时的时间范围内查询

转载 作者:行者123 更新时间:2023-12-01 09:33:53 26 4
gpt4 key购买 nike

我有一个 MongoDB 数据存储设置,位置数据存储如下:

{
"_id" : ObjectId("51d3e161ce87bb000792dc8d"),
"datetime_recorded" : ISODate("2013-07-03T05:35:13Z"),
"loc" : {
"coordinates" : [
0.297716,
18.050614
],
"type" : "Point"
},
"vid" : "11111-22222-33333-44444"
}

我希望能够执行类似于 date range 的查询例如,而是在时间范围内。即检索上午 12 点到下午 4 点之间记录的所有点(也可以使用 1200 和 1600 24 小时时间完成)。

例如

有积分:
  • "datetime_recorded" : ISODate("2013-05-01T12:35:13Z"),
  • "datetime_recorded" : ISODate("2013-06-20T05:35:13Z"),
  • "datetime_recorded" : ISODate("2013-01-17T07:35:13Z"),
  • "datetime_recorded" : ISODate("2013-04-03T15:35:13Z"),

  • 查询
    db.points.find({'datetime_recorded': {
    $gte: Date(1200 hours),
    $lt: Date(1600 hours)}
    });

    将只产生第一个和最后一个点。

    这可能吗?还是我必须每天都这样做?

    最佳答案

    嗯,解决这个问题的最好方法是店铺 session 记录也分开。但是你可以使用聚合框架来解决这个问题,尽管那是 不是 会非常快:

    db.so.aggregate( [ 
    { $project: {
    loc: 1,
    vid: 1,
    datetime_recorded: 1,
    minutes: { $add: [
    { $multiply: [ { $hour: '$datetime_recorded' }, 60 ] },
    { $minute: '$datetime_recorded' }
    ] }
    } },
    { $match: { 'minutes' : { $gte : 12 * 60, $lt : 16 * 60 } } }
    ] );

    第一步 $project ,我们从 hour * 60 + min 计算分钟数然后我们在第二步匹配它: $match .

    关于MongoDB - 在几小时的时间范围内查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834596/

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