Сбой сценария MongoDB в кластере
Я пытаюсь выполнить операцию базы данных для базы данных MongoDB, размещенной в Compose.io. Мой скрипт mongodb
db.getCollection('companies').find({}).forEach(function(company){
var oldHosts = company.hosts
var newHosts = db.getCollection('hosts').find({'_id':{'$in':oldHosts},'original':true}).map(function(host){
var newHostId = ObjectId()
host._id = newHostId
host.salt = ''
host.hash = ''
host.original = false
host.company = company._id
return host
})
var hostEmails = newHosts.map(function(host){
return host.email
})
var userEmailIDs = {}
db.getCollection('users').find({'email':{'$in':hostEmails}}).forEach(function(user){
userEmailIDs[user.email] = user._id
})
var insertHosts = newHosts.map(function(host){
host.user = userEmailIDs[host.email]
return host
})
db.getCollection('hosts').insert(insertHosts)
})
Я тестирую этот скрипт в локальной базе данных, и он работал нормально. Но на сервере я получаю следующую ошибку,
Error: getlasterror failed: {
"singleShard" : "",
"lastOp" : {
"ts" : Timestamp(1551616205, 19),
"t" : NumberLong(15)
},
"connectionId" : 156684,
"codeName" : "WriteConcernFailed",
"ok" : 0,
"errmsg" : "election occurred after write",
"code" : 64,
"operationTime" : Timestamp(1551616208, 8),
"$clusterTime" : {
"clusterTime" : Timestamp(1551616208, 8),
"signature" : {
"hash" : BinData(0,""),
"keyId" : NumberLong("")
}
}
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getLastErrorObj@src/mongo/shell/db.js:743:1
DBCollection.prototype._printExtraInfo@src/mongo/shell/collection.js:802:15
DBCollection.prototype.insert@src/mongo/shell/collection.js:387:5
@(shell):23:5
DBQuery.prototype.forEach@src/mongo/shell/query.js:501:1
@(shell):1:1
Кто-нибудь может найти причину этого? Спасибо