我们的mongo更新面临超时问题。我们的馆藏目前包含约30万份文档。当我们尝试通过用户界面更新记录时,服务器超时,用户界面陷入困境。
Lead.updateOne({
_id: body.CandidateID
}, {
$set: {
ingestionStatus: 'SUBMITTED',
program: body.program,
participant: body.participant,
promotion: body.promotion,
addressMeta: body.addressMeta,
CreatedByID: body.CreatedByID,
entryPerson: body.entryPerson,
lastEnteredOn: body.lastEnteredOn,
zipcode: body.zipcode,
state: body.state,
readableAddress: body.readableAddress,
promotionId: body.promotionId,
programId: body.programId,
phone1: body.phone1,
personId: body.personId,
lastName: body.lastName,
hasSignature: body.hasSignature,
firstName: body.firstName,
city: body.city,
email: body.email,
addressVerified: body.addressVerified,
address: body.address,
accountId: body.accountId
}
这是我们更新单个记录的方式。我们在堆栈中使用了mlab和Heroku。寻找有关如何大大加快速度的建议。
谢谢。
答案 0 :(得分:2)
如果索引很好,那么您可以尝试rebuilding indexes对此集合进行操作。 从mango命令行收集索引: 例如,从mongo命令行重建线索收集索引:
db.lead.reIndex();
参考:
https://docs.mongodb.com/v3.2/tutorial/manage-indexes/ https://docs.mongodb.com/manual/reference/command/repairDatabase/
答案 1 :(得分:1)
如果您不使用此功能,请尝试使用此功能 索引构建可能会阻止对数据库的写操作,因此您不想在高峰使用期间在大型表的前台构建索引。您可以通过指定background:true来使用索引的后台创建。
db.collection.createIndex({a:1},{background:true})
这最终将花费更长的时间来完成,但不会阻止操作,并且对性能的影响较小。
答案 2 :(得分:1)
1)通过ID作为分片键的分片线索集合。 2)检查mongodb由于索引占用的内存是否小于mongoDb服务器的内存。
答案 3 :(得分:1)
您是否尝试过this answer的建议?也就是说,更新时没有写顾虑吗?