2013-06-01 112 views
2

我有這個Node.js應用程序,它獲取了大量帶有唯一標識符的JSON數據,然後使用Mongojs將它們插入到MongoDB中。Mongojs:忽略重複對象插入

問題是,在這大量的數據中,可能會有一些重複的文檔!所以當使用Mongojs插入這些數據時,它會返回一個錯誤E11000 duplicate key error,並且不會繼續插入。

所以我在找什麼就像本地蒙戈的continueOnError/keepGoing選項。它會忽略重複並繼續insert
http://mongodb.github.io/node-mongodb-native/api-generated/collection.html#insert

這是我的代碼,如果有幫助:

var mongojs = require('mongojs'), 
dburl = process.env.MONGOHQ_URL || 'mongodb://localhost/test', 
db = mongojs(dburl, ['concerts']); 

function insertData(data) { 
db.concerts.insert(data, {keepGoing: true, safe: true}, function(err, docs){ 
    console.log('err: ' + err + ' docs:' + docs); 
    if(!err) console.log('data inserted successfully!\n'); 
}); 
} 

exports.insertData = insertData; 

在這裏,在這個代碼,我選項設置爲true,但它仍然無法正常工作(同樣的錯誤)。
有無論如何,我可以用Mongojs做到這一點,還是我必須使用native-mongo?

在此先感謝。

回答

2

這解決了我的問題,以防萬一。

db.concerts.insert(data, {continueOnError: true, safe: true}, function(err, docs){ 
     console.log('err: ' + err); 
     if(!err) console.log('data inserted successfully!\n'); 
    }); 

來源https://github.com/gett/mongojs/issues/58

+0

但帕拉姆 「文檔」 總是空。你有解決方案來獲取所有插入的對象嗎? –

+1

我只是再次測試,當沒有錯誤'docs'包含您的數據進行處理,相反,當有一個錯誤,如'重複密鑰','err' param包含錯誤消息和文件,錯誤。希望這可以幫助 – Hamed