如何在mongodb中从datetime分割日期?

时间:2017-07-12 14:34:17

标签: node.js mongodb

我在代码下面写了。我试着分割日期和时间,但我无法得到正确的解决方案。我在Node JS中编写服务。如果我尝试在日期之间获取日期,它正在工作。但是,如果我试图获取确切的日期,它就无法正常工作。

use Net::SFTP::Foreign;
use warnings;
use strict;

 my $stfp = Net::SFTP::Foreign->new (
    'sftp.abc.com',
    timeout         => 240,
    user            => 'user1',
    password        => 'xxx',
    port            => '22',
    autodie         => 1,
);

my $remotefiles;
$remotefiles = $stfp->ls('/files'); 

foreach (@$remotefiles){
    my $content;
    my $file = $_;
    my $filename = $file->{filename};
    if($filename ne "." && $filename ne ".."){
        $content = $stfp->get_content('/files/'.$filename);
        print $content;
    }

}

$stfp->disconnect;

exports.screenLog = function(req,res){
console.log(req.query);
Timesheet.find({userId: req.params.id,startTime: $match:{$gte : new Date(req.query.startTime),$lte: new Date(req.query.endTime)}}, function (err, timesheet) { 
console.log(timesheet); 
  var timesheetIdArray = timesheet.map(function(ele){return ele._id});

  Screenshot.find()
  .where('timesheetId')
  .in(timesheetIdArray)
  .exec(function(err,data){
    //console.log('ScreenData:',data);
     if(err) {
      res.send(err);
    }
    
    res.send(data);
  });
  
});

2 个答案:

答案 0 :(得分:1)

无法在MongoDB中拆分日期和时间。它们是数据库中的Store in Date对象。

但您可以按$gte,$lte,$eq等比较日期

对于比较,您只能与UTC日期进行比较,为此您可以找到moment图书馆

例如:日期:{$ gte:moment(YOUR_DATE_IN_STRING)}

答案 1 :(得分:0)

我对Node.Js不太熟悉,但我认为项目聚合可以帮助你解决这个问题:

db.MyCollection.aggregate(
[
    {
    $project:
            {
                year: { $year: "$MyDateField" },
        month: { $month: "$MyDateField" },
        day: { $dayOfMonth: "$MyDateField" },
        hour: { $hour: "$MyDateField" },
        minutes: { $minute: "$MyDateField" },
        seconds: { $second: "$MyDateField" },
        milliseconds: { $millisecond: "$MyDateField" },
        dayOfYear: { $dayOfYear: "$MyDateField" },
        dayOfWeek: { $dayOfWeek: "$MyDateField" },
        week: { $week: "$MyDateField" }
            }
        }
]

这将归还:

{
     "_id" : "5897697667f26827dc9c9028",
    "year" : 2017,
    "month" : 2,
    "day" : 5,
    "hour" : 18,
    "minutes" : 5,
    "seconds" : 41,
    "milliseconds" : 822,
    "dayOfYear" : 36,
    "dayOfWeek" : 1,
    "week" : 6
}

这会让你更接近解决方案吗?