• High performance find query using lean() in mongoose


    Lets start with a basic find query in mongoose and observe its execution time.

    1
    2
    3
    4
    5
    6
    7
    8
    Event.find({'schedule.closing': {'$gte': +new Date()}},
            {},
            {limit:20, skip:0}
        ).exec(function (err, events){
     ........
     ........
      }
    );

    In my last project on Nodejs, I have used the above query to fetch the events from “Event” collection satisfying the given condition. After computing the average execution time, it came out to be 218ms.

    Then, I applied lean() in the same query:

    1
    2
    3
    4
    5
    6
    7
    8
    Event.find({'schedule.closing': {'$gte': +new Date()}},
            {},
            {limit:20, skip:0}
        ).lean().exec(function (err, events){
     ........
     ........
      }
    );

    This time the average execution time came out to be 71ms which is drastically less than the without “lean” version of the same query.

    So, you must be wondering what exactly lean() did here?

    As described by the mongoose docs, documents returned from queries with the lean option true are plain javascript objects, not Mongoose Documents. They have no save method, getters/setters or other Mongoose magic applied. So in this way the over head attached to the mongoose document is not there in case of lean and we get high performance.

     
  • 相关阅读:
    bzoj3622: 已经没有什么好害怕的了
    BSGS
    LOJ#2320 生成树计数
    ??? cliquers
    生成函数
    洛谷P5206 数树
    01分数规划
    差分约束系统
    51nod1238 最小公倍数之和 V3
    51nod1237 最大公约数之和 V3
  • 原文地址:https://www.cnblogs.com/oxspirt/p/10194835.html
Copyright © 2020-2023  润新知