簡體   English   中英

如何修復來自 perl mongodb 腳本的警告錯誤

[英]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;
}
        

我有一些問題:

  1. 我使用子程序將時間字符串轉換為可用於比較集合帳戶中的“時間”的日期時間:ISODate。 當我運行上面的代碼時,它正確地提取了我想要的記錄,但給出了警告錯誤。 我不知道如何解決它:

    在 /usr/lib64/perl5/vendor_perl/MongoDB/BSON.pm 第 218 行將浮動時區保存為 UTC

  2. 上面的代碼可以很好地連接到本地主機。 但是當我嘗試連接到遠程主機以訪問同一網絡(例如 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM