2017-08-10 62 views
-1

我正在使用一個平均應用程序,其中一個功能是上傳csv文件並將其轉換爲json並保存在mongodb數據庫中。但即使是一個月,我也會收到一份csv,其中包含數據庫中已存在的新記錄和記錄(包含新信息)。總結,我需要更新許多對象,並創建它,如果不存在。我的問題是,有什麼更好的方法來做到這一點,因爲這些文件非常大。更新很多對象,創建如果不存在

目前的版本只需要創建這些記錄是這樣的:

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

      res.json(records); 
}); 
+0

'records'的內容是什麼? –

回答

0

您可以通過以下一些簡單的步驟

  1. 在節點JS使用解析CSV這樣做是爲了CSV轉換成JSON
  2. 然後從收集中獲取所有數據,並將其與新數據進行比較。
  3. 爲了比較你可以使用lodash庫的數據,它的方法非常快。
  4. 一旦你得到了新的或需要更新的數據的_id。您可以使用下面的查詢

db.collectionName.update({$ _in:{「_id」:ids}},{$ set:{「key」:「value」}},{upsert:true ,multi:true},function(err,doc){console.log(doc) })

不要忘記添加upsert true,因爲您還有新的數據。

希望它幫助!

+0

那麼,在這種情況下,我需要將更新查詢放入迭代器中? – LorD

+0

No $ in將會像迭代器一樣行事。你只需要找出那些新的,需要更新的ID,並把它放在一個數組中,比如說ids = [「AREDS2323」,「ASDS2323」],然後傳入上面的查詢 –

+0

哦,謝謝你的幫助! :) – LorD

相關問題