更新许多对象,如果不存在则创建

时间:2017-08-10 19:22:27

标签: node.js mongodb mongoose mongodb-query

我正在使用一个卑鄙的应用程序,其中一个功能是上传csv文件并将其转换为json并保存在mongodb数据库中。但即使是一个月,我也会收到一个csv,其中包含数据库中已存在的新记录和记录(包括新信息)。总结一下,我需要更新许多对象并创建它(如果不存在)。我的问题是,更好的方法是什么,因为这些文件非常大。

当前版本只是创建这样的记录:

Patient.create(records ,function(err, records) {
                if (err){
                    res.send(err);
                    console.log(err);
                }

            res.json(records);
 });

1 个答案:

答案 0 :(得分:0)

您可以按照一些简单的步骤

来完成此操作
  1. 在Node JS上使用解析CSV将CSV转换为JSON
  2. 然后从集合中获取所有数据并将其与新数据进行比较。
  3. 对于数据比较,您可以使用lodash库,它的方法非常快。
  4. 获得新数据或需要更新的数据的_id后。您可以使用以下查询
  5. db.collectionName.update({$ in:{“_ id”:ids}},{$ set:{“key”:“value”}},{upsert:true,multi:true},function(err) ,DOC){      执行console.log(DOC) })

    不要忘记添加upsert true,因为您还有新数据。

    希望有所帮助!!