perl - perl查询ISODate时间

标签 perl mongodb

我有一个应用程序,我需要能够通过 mongoshell 查询以下查询中的日期范围,但我无法通过 perl MongoDB 驱动程序重现它

db.matches.find({ last_seen: { $gte: new Date("2014-05-15T00:00:00.000Z")}});

我最初的 perl 查询看起来像(我知道很幼稚)

$matches->find({ last_seen => { '$gte' => "new Date(\"2014-05-15T00:00:00.000Z\")"}});

数据的一个例子是

{
    "_id" : ObjectId("5365e47c183aa8df9dee7558"),
    "count" : NumberLong(21),
    "matches" : [ 
        "Team 2", 
        "Team 2", 
        "Team 2", 
        "Team 1", 
        "Team 1", 
        "Team 1", 
        "Team 2", 
        "Team 1", 
        "Team 1", 
        "Team 2", 
        "Team 1", 
        "Team 2", 
        "Team 1", 
        "Team 1", 
        "Team 1"
    ],
    "player1" : "Team 1",
    "player2" : "Team 2",
    "last_seen" : ISODate("2014-05-17T08:16:05.000Z")
}

最佳答案

与大多数语言实现一样,您对语言实现使用 native “日期”类型而不是字符串。 MongoDB 将日期 (ISODate) 存储为日期类型将被序列化为的实际 BSON 表示(实际上是时间戳)。

MongoDB Perl 驱动程序支持 DateTimeDateTime::Tiny用于序列化和反序列化:

my $cursor = $matches->find({
    last_seen => { 
       '$gte' => DateTime->new( year => 2014, month => 5, day => 15 )
    }
}

或者您将实际获取用于比较的日期对象。

参见 DatesData Types文档部分以获取更多信息。

关于perl - perl查询ISODate时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709428/

相关文章:

MongoDB:mongorestore:找不到命令

javascript - 使用 mongodb 触发器

perl - 如何将自定义模块添加到 perl 纸箱?

Java 端点 - Perl 消费者 Web 服务

javascript - WWW::使用 Javascript 实现 Mechanize 工作

java - Mongo hadoop mapreduce 显示错误

perl - WWW::Mechanize 从页面获取内容

perl - 将 IE Cookie 加载到 Perl 的 WWW::Mechanize 中

mongodb - 将对象导入到 mongodb 集合中,这些对象不是已删除 _id 的重复项

mongodb - 备份 mongodb docker 实例的最佳策略?