有时findOneandUpdate插入双精度

时间:2019-07-10 20:20:46

标签: mongodb mongoose

我面临一个问题,即MongoDB两次插入相同的文档。但是,这种情况很少见。

我正在编码一个实时统计网站,其中仅包含足球统计信息。要将文档首先插入数据库,请检查是否存在相同的匹配项。然后,如果存在匹配项,请使用新值对其进行更新。而已。我不能共享所有代码,但是我正在使用带有upsert选项的findOneandUpdate方法。在findOneandUpdate方法中,我必须使用“ doc.save()”保存从回调中返回的文档,然后再对其进行修改。在该脚本中,我正在使用Cronjob(node-cron库),并且它每分钟都在运行。大多数情况下,我会获得想要用新结果更新的结果(如果存在)。但是有时您会在图像中看到两次插入结果的情况。

mongodb

//in async forEach,
 await MatchObject.findOneAndUpdate({matchid: id}, // find a document with that filter
    modelDoc, // document to insert when nothing was found
    {upsert: true, new: true, runValidators: true, useFindAndModify: false}, // options
    function (err, doc) { }) 
//Also inside findOneAndUpdate method i have save method that is modified with returned document from findOneAndUpdate method.
doc.save().then(res => console.log(res)); 

节点v11.15.0 MongoDB Shell版本v4.0.10 mongoDB版本v4.0.10 猫鼬5.6.2

0 个答案:

没有答案