[英]How to fix a warning error from perl mongodb script
我正在使用 perl mongodb 模塊連接到 mongdb 並在一定時間后從集合帳戶中提取記錄,例如'2020-07-17 16:15:16'。
收款賬戶如下:
{
"_id" : ObjectId("5f0e13e475a2f6784114b68t”),
"subscriber" : “1234567890”,
"time_stamp" : "2020-07-14T20:21:53Z",
"time" : ISODate("2020-07-14T20:21:53.407Z")
}
我的代碼是:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Data::Dumper;
use DateTime;
use JSON;
use MongoDB;
my $client = MongoDB::MongoClient->new( host => '127.0.0.1', port => 27017 );
my $db_name = 'test';
my $database = $client->get_database($db_name);
my $collection = $database->get_collection('account');
my $start_date = '2020-07-17 16:15:16';
my $dt_start= convert_string_datetime($start_date);
foreach my $e ($collection->find( {time => { '$gte' => $dt_start }}) ->all) {
my $subscriber = $e->{subscriber};
print "sub=$subscriber \n";
}
exit(0);
sub convert_string_datetime
{
my $str =$_[0];
my $year;
my $four_digit_year;
my $month;
my $day;
my $day_and_time;
my $time;
my $mins;
my $hrs;
my $secs;
($four_digit_year,$month,$day_and_time)=split(/-/,$str);
($day,$time)=split(/ /,$day_and_time); #split the date and time
($hrs,$mins,$secs)=split(/:/,$time);
my $dt = DateTime->new(
year => $four_digit_year,
month => $month,
day => $day,
hour => $hrs,
minute => $mins,
second => $secs,
);
return $dt;
}
我有一些問題:
我使用子程序將時間字符串轉換為可用於比較集合帳戶中的“時間”的日期時間:ISODate。 當我運行上面的代碼時,它正確地提取了我想要的記錄,但給出了警告錯誤。 我不知道如何解決它:
在 /usr/lib64/perl5/vendor_perl/MongoDB/BSON.pm 第 218 行將浮動時區保存為 UTC
上面的代碼可以很好地連接到本地主機。 但是當我嘗試連接到遠程主機以訪問同一網絡(例如 192.168.xx)中的 mongodb 時它失敗,例如:
我的 $client = MongoDB::MongoClient->new(host => '192.168.10.24', port => 27017);
連接到同一 192.168* 網絡中的遠程主機的最佳方式是什么?
非常感謝你的幫助。
您在 MongoDB 中存儲本地時間(沒有時區的時間),但 MongoDB 僅支持 UTC 時間戳。 警告告訴您本地時間在存儲之前已轉換為 UTC。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.