我如何解释()在MongoDB中的upsert来查看是否使用索引?
当代码改变时,快速告诉我索引是否适合find()
语句是( nodejs
)
collection.find(query).explain(function(err, explaination) { console.log('MongoDebug: ' + explaination.cursor); });
如果游标是BtreeCursor
types,则使用索引。
如何在使用insert()
和upsert: true
时检查这个问题upsert: true
?
explain()
是游标上的函数,在插入时不可用。 还有一个$explain
查询修饰符,但它仍然是一个查询修饰符。
然而,作为explain 2.0
有一个大的工作负载,其中一个子任务是提供explain()
更新 – SERVER-14101 。 这在2.7.7版本中被列为固定的。
需要注意的是,为每个操作执行解释可能不是一个好主意,因为它迫使MongoDB始终重新评估查询计划,从而增加了数据库上的服务器负载。
您现在可以使用集成的profiler和db.currentOp()
来分析非查询操作的性能,但洞察力是有限的。 尝试一个简单的find().explain()
进行手动优化,使用的索引应该是相同的。