2017-04-30 2 views
0

APIで取得したデータを10分ごとに公開するようにしたい。MongoDBスキーマスケジュール公開

cronなどのルーチンは完全に動作しますが、有効期限に近い日付の最初の記事を取得しようとすると問題が発生し、公開されていないか、またはできるだけ少なくなっています。

私は、出版された時間、出版日を更新するなどのインクリメンタルフィールドを作成しようとしました。しかし、私は数式を与えることはできません、私はいつも同じ結果、同じ記事を返します。それが終わったときに私は(彼らは差の時間や日数の日付を持っている)以前の有効期限が切れたものを投稿し、循環キューの並べ替えをする必要があると

スキーマ

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

コード

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

}); 

、やり直してください。しかし、私はいつも最初の投稿を公表しており、アイデアが不足しています。

私は心が澄んだ後、数時間おき、後でそれを取り戻す方がよいでしょう。

ありがとうございます!

答えて

0

解決済み!次のルーチンを正しく実行すると、配列の要素([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() } }); 

ありがとうございます!