2016-06-08 89 views
1

在来自mongodb集合的node.js中,如何根据date_added字段过滤前一年,上一周和上个月的文档?该date_added领域是ISO Date格式node.js基于日期的mongodb过滤器

{ 
    "_id" : ObjectId("574e68e5ac9fbac82489b689"), 
    "title" : "car", 
    "price" : 100, 
    "date_added" : ISODate("2016-06-01T04:47:33.025Z"), 

} 
+1

你在这方面做了什么? – profesor79

+0

@ profesor79对我来说,最好的处理方式是使用$ lt,但问题在于我应该如何比较date_added字段,因为在这里我不能使用硬编码数据 – learner

回答

1

的最佳方式node.js的一个变量是使用moment.js
npm install moment

var moment = require ('moment') 

function previous_year_artist(req, res, next) { 
     var dateTimeTofilter = moment().subtract(1, 'year'); 
     var filter = { 
      "date_added": { 
       $gte: new Date(dateTimeTofilter._d) 
      } 
     }; 
     db.collection.find(
      filter 
     ).toArray(function(err, result) { 
      if (err) return next(err); 
      res.send(result); 
     }); 

    } 

根据您的要求使用year,month, week

1

我假设你有一个名为dateTimeTofilter

var week = 7, 
    year =365, 
    month = 31; // this values you need to calculate and then use in query 


var dateTimeTofilter = new Date() - week; 
var filter = {"date_added": { $lte: dateTimeTofilter }}; 
          // or $gte- depends on time windows 

var cursor = db.collection('collectionName').find(filter); 

cursor.forEach(
    function(doc) { 
      //process data here 
      }