我有一个应用程序,我需要能够通过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")
}
答案 0 :(得分:3)
与大多数语言实现一样,您使用本机" date"类型到您的语言实现而不是字符串。 MongoDB将日期(ISODate
)存储为日期类型将被序列化的实际BSON repraesentation(实际上是时间戳)。
Perl的MongoDB驱动程序支持DateTime和DateTime::Tiny进行序列化和反序列化:
my $cursor = $matches->find({
last_seen => {
'$gte' => DateTime->new( year => 2014, month => 5, day => 15 )
}
}
或者你要实际获得用于比较的日期对象。
有关详细信息,请参阅文档Dates部分中的Data Types。