後無法正常使用的NodeJS上的MongoDB +一個簡單的腳本一些奇怪的情況。的NodeJS,MongoDB的更新陣列插入許多
我從CSV文件中讀取數據,並用數據做操作後,我想將數據保存到MongoDB的。一切工作正常使用單個插入,但有更好的表現,我想用插入很多,所以這裏是我的腳本:
AssertionError: {"name":"MongoError","message":"insertDocument :: caused by :: 11000 E11000 duplicate key error index: databasename.peoples.$_id_ == null ...
:
parser.on('readable', function(){
while(record = parser.read()){
...
// Saving data in a buffer
buffer.push({
'name': cleared_name,
'source': source,
'notes': notes,
'address': address[0]
})
// If buffer is more that 100 or we rich end of csv file - insert data into mongodb
if(buffer.length >= 100 || readAllLines) {
db.collection('peoples').insert(buffer, {w: 1, forceServerObjectId: false}, function(err, result) {
lineCount -= result.insertedCount;
// Close db connection if we insert all data
if (lineCount === 0 && readAllLines) {
db.close()
}
// Lets check what is in buffer right now
console.log(buffer)
// Clear buffer
buffer.length = 0;
buffer = [] // or delete buffer;
});
}
}
})
插入200行,MongoDB中給我的錯誤後,和緩衝器陣列將包含數據:
[{ name: 'kelly',
source: 'Forbes.com',
notes: 'Scraped from box XX',
address: '104.236.115.138',
_id: 5565c77d8533c30967b5b278 },
{ name: 'kas',
source: 'Forbes.com',
notes: 'Scraped from box XX',
address: '184.168.221.28',
_id: 5565c77d8533c30967b5b279 },
{ name: 'alle',
source: 'Forbes.com',
notes: 'Scraped from box XX',
address: '82.118.66.19',
_id: 5565c77d8533c30967b5b27a }...
]
即使我設置forceServerObjectId爲false插入在緩衝器陣列,mongodb的集_id。有沒有可能阻止這種情況? 我該如何清除緩衝區變量?
我猜緩存中還有一個已經插入的數據,因爲相同的ID是已存在於數據庫蒙戈給錯誤的問題(但我不知道,我右100%)
感謝答覆
更新緩衝區正如你可以從上面的代碼看 - 我不是推到_id緩衝,並且csv沒有_id字段。 _Id在第一次做insertMany後出現在緩衝區中。 – user1341596
好吧,我明白了。那麼什麼是'domainystem.domain'? – bagrat
運行錯誤的數據庫 - 更新 – user1341596