2016-06-08 127 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 
      }