Open3

mongooseのleanで、クエリを高速化する

nakaakistnakaakist

leanをつけないで、単にfindなどでmongooseでクエリを書くと、返り値はmongoose documentと呼ばれる、saveなどのメソッドが生えたオブジェクトになる。

MongoDBからかえってきたオブジェクトに、こういった便利メソッドを生やすプロセスをhydrartionという。

MyModel.findOne().lean();などと、クエリの最後にleanをつけると、このhydrationプロセスをスキップでき、処理が高速になる。返り値は、POJO (plain old javascript object)となる。

nakaakistnakaakist
  • leanを使うべきとき
    • クエリの結果をそのまま使用し、Expressのレスポンスなどに送る場合
    • クエリの結果を変更しない場合や、custom getterを使用しない場合
  • 使うべきでないとき
    • クエリの結果を変更する場合
    • getterやtransformのような機能に依存する場合