2017-04-30 6 views
0

Ich möchte eine Post-Veröffentlichung Routine alle 10 Minuten von Daten von API erhalten. Die Routine von Cron und anderen funktioniert perfekt, aber das Problem kommt, wenn ich versuche, den ersten Artikel mit einem Datum näher an den Ablauf zu bekommen und wurde nicht oder so wenig wie möglich veröffentlicht.MongoDB Schema Zeitplan veröffentlichen

Ich habe versucht, ein inkrementelles Feld mit der Zeit, die veröffentlicht wurde, zu erstellen, aktualisieren Sie das Datum der Veröffentlichung, etc .; Aber ich kann nicht mit der Formel geben, ich gebe immer das gleiche Ergebnis, den gleichen Artikel zurück.

Schema

"_id": item.ID, 
"title": item.title, 
"images": [ item.firstImage ], 
"url": "none", 
"expired": "2017-04-30T22:00:00+03:00", 
"lastPublish": "2017-04-30T20:41:02+03:00", 
"publish": 0 

-Code

db.find({}).sort({ 'expired': 1, 'lastPublish': 1 }).limit(1).exec(function(err, doc) { 
//db.find({}).sort({ 'publish': 1, 'expired': 1 }).limit(1).exec(function(err, doc) { 

    db.update({ '_id': doc._id }, { '$set': { 'lastPublish': new Date(), '$inc': { 'publish': 1 } }) 

}); 

Ich brauche eine Art Kreis Warteschlange zu machen, diejenigen veröffentlichen, die früher abläuft (sie haben das Datum Stunden und Tage der Differenz) und wenn es vorbei ist , Von vorn anfangen. Aber ich veröffentliche immer den ersten Beitrag und mir gehen die Ideen aus.

Ich sollte besser für ein paar Stunden gehen und es später zurückholen, wenn ich meine Meinung geklärt habe.

Danke!

Antwort

0

Gelöst! Das Ausführen der folgenden Routine funktioniert ordnungsgemäß, ich weiß nicht, warum gestern nicht funktioniert hat, abgesehen von der, die fehlte, um das Element des Arrays ([0]) zu wählen.

db.find({}).sort({ 'publish': 1, 'expired': 1 }).limit(1).exec(function(err, doc) { 

    db.update({ '_id': doc[0]._id }, { '$inc': { 'publish': 1 }, '$set': { 'lastPublish': new Date() } }); 

danke!