2017-04-30 1 views
0

Je veux faire une routine de publication après toutes les 10 minutes de données obtenues par API.MongoDB schéma calendrier publication

La routine de cron et d'autres fonctionne parfaitement, mais le problème vient quand j'essaie d'obtenir le premier article avec une date plus proche de l'expiration et n'a pas été publié ou aussi peu que possible.

J'ai essayé de créer un champ incrémental avec les temps qui ont été publiés, mettre à jour la date de publication, etc; Mais je ne peux pas donner avec la formule, je retourne toujours le même résultat, le même article.

Schéma

"_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 } }) 

}); 

je dois faire une sorte de file d'attente circulaire, poster ceux qui expirent plus tôt (ils ont des dates d'heures et les jours de différence) et quand il est fini , recommencer. Mais je publie toujours le premier message et je manque d'idées.

Je ferais mieux de partir pendant quelques heures et de le reprendre plus tard, quand je me serai libéré.

Merci!

Répondre

0

Résolu! Exécution de la routine suivante fonctionne correctement, je ne sais pas pourquoi hier ne fonctionnait pas, à part celui qui manquait pour choisir l'élément du tableau ([0]).

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() } }); 

merci!