简体   繁体   中英

How to update a MongoDB collection automatically every midnight?

I currently have an SPA built with MERN and I want to improve it further by adding a scheduled update to a particular collection in my MongoDB database by setting a boolean field in all of the documents in a collection to false every midnight.

Can someone point me to the right direction on how to accomplish this?

I want to be able to scale it as well at some point - for example, have a value saved in a document in another collection to indicate the time where these boolean fields will be invalidated in the front end?

I'm using a MERN stack. Thanks for your help!

you can use cron job

const moment = require('moment');
const CronJob = require('cron').CronJob;

const updateCollections = async ()=>{
  await someQueriesServices()
}

new CronJob('0 0 * * *', async () => {
  await updateCollections()
}, null, true, 'America/Los_Angeles');

or you can use setInterval

const timeInSec = moment().endOf('day').valueOf()
const Interval = Date.now() - timeInSec;

setInterval(async ()=>{
    await updateCollections()
},Interval)

I usually use node-schedule

const schedule = require('node-schedule');

const j = schedule.scheduleJob('42 * * * *', function(){
  console.log('The answer to life, the universe, and everything!');
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM