2013-06-01 74 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