最近做了一个利用利用MongoDB的updateMany方法更新数据库,做一下记录
前提:
1.准备一个含有100条数据的数组对象,格式如下
const testArray = [
{address:"1234567"},
{address:"2345678"},
......
]
2.执行npm i node-schedule,下载自动更新依赖
一: 初始化数据库(更新100条)
const initDefaultData = async () => {
const initData = [];
for (var i = 0; i < 100; i++) {
initData.push({address: initadress[i].address, initBoolean: false});
}
await db.initDoc.insertMany(initData);
}
二: 找到10条initBoolean为false的数据,此时的数据格式依旧为数组对象
const fountdata = db.initDoc.find({initBoolean:false}).limit(10)
//没有数据时,直接return,不往下执行三四五六步
if(fountdata === []){
console.log("处理失败")
return
}
三:将上一步的数据处理成纯数组
const ceshiarray = [];
fountdata.map(item=>{
array.push(item.address)
})
此时,数据格式为["a","b",.....]
四:将第三步筛选出的数据与初始化的数据库进行对比,含有相同的address的,将initBoolean设置为true
db.initDoc.updateMany({address:{$in:ceshiarray}},{$set:{initBoolean:true}})
此时,数据库更新操作完成
五:将上述二三四步代码封装成一个函数
const ceshifunction = async()=>{
。。。。。。
}
六: 引入node-schedule依赖
const schedule = require('node-schedule');
//每小时执行一次
const scheduleCronstyle = async () => {
schedule.scheduleJob('0 * * * * ', () => {
ceshifunction()
})
}