mongoose里查询时通过链式调用,顺序有影响吗?
来源:2-5 Mongoose实战配置&CURD操作
慕先生的刀
2020-05-12 13:52:15
在集成使用mongoose的过程中,我建好了一个model,比如User。
然后我需要在用户表中查询数据,那么想请问下:
const result = await User.find().skip(page * limit).limit(limit).sort({ created: -1 })
这种链式查询的方式,如果调整链式顺序,比如:
const result = await Tags.find().sort({ created: -1 }.skip(page * limit).limit(limit))
就是把sort、skip、limit等各种方法变换顺序执行,
1、会对结果造成影响吗?
2、如果造成影响,结果不同,那么是否有不管顺序如何,有优先级的规则,如果有这个规则,请问在哪里可以查阅啊。
3、如果对结果不造成影响,那么会影响到查询执行效率吗?
1回答
Brian
2020-05-12
就是把sort、skip、limit等各种方法变换顺序执行,
1、会对结果造成影响吗?
——可以尝试一下,一般是Query打头:https://mongoosejs.com/docs/queries.html
你非要换个位置的话,理解起来就非常另类啊,不便于阅读
2、如果造成影响,结果不同,那么是否有不管顺序如何,有优先级的规则,如果有这个规则,请问在哪里可以查阅啊。
——mongodb官方文档中有一个说明,这算是一个语法结构:
这个后面的Limit,skip,sort 这三个一般来说是skip 最前,limit之后,sort最后,为什么?
mongodb的查询就像我们说话,走路,穿衣,吃饭一样啊,很自然的写法。
在mongoose中因为这些sort, skip, limit全在原型链上,自然的,我们会考虑用上一层的数据结果,用链式的写法更加容易去理解。
3、如果对结果不造成影响,那么会影响到查询执行效率吗?
——影响到执行效率的是最终的查询query,你可以把mongoose的debug打开,看看query,然后在SQL分析工具中去分析,一般要靠数据库优化、查询语句的优化、程序的优化三个层次提升查询效率
相似问题