2017-04-09 3 views
1

Ich habe eine Sammlung namens JobPosting und es hat ein Feld mit dem Namen publishDate, was ich tun möchte, ist die Anzahl der Datensätze zu erhalten, die vor den letzten 30 Tagen veröffentlicht wurden. Was ich habe versucht, ist:MongoDB Anzahl der Datensätze, die vor 30 Tagen veröffentlicht werden

db.JobPosting.aggregate([ 
    {$match:{ 
     "publishDate":{$gt: new Date(ISODate().getTime() - 1000*60*60*24*30)} 
    }}, 
    {$project:{ 
     "publishDate":{$gt: new Date(ISODate().getTime() - 1000*60*60*24*30) 
    }}, 
    {$group:{ 
     _id:publishDate, 
     "count":{$sum:1} 
    }} 
]) 

Antwort

2

Sie nur dies tun können, keine Notwendigkeit für aggregation Nutzung;

db.JobPosting.find({ publishDate: { $lt : new Date(ISODate() - (1000*60*60*24*30)) } }) 
      .count() 

die Anzahl der Dokumente in JobPosting Holen Sie sich das publishDate Feld vor heute - 30 Tage. Da Sie die Daten vor (heute - 30 Tage) Punkt möchten, müssen Sie $lt verwenden. Tested on MongoDB web shell.

Verwandte Themen