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官方文档中有一个说明,这算是一个语法结构:

http://img.mukewang.com/climg/5ebaa5d5095e416406810117.jpg

这个后面的Limit,skip,sort 这三个一般来说是skip 最前,limit之后,sort最后,为什么?

mongodb的查询就像我们说话,走路,穿衣,吃饭一样啊,很自然的写法。

在mongoose中因为这些sort, skip, limit全在原型链上,自然的,我们会考虑用上一层的数据结果,用链式的写法更加容易去理解。

3、如果对结果不造成影响,那么会影响到查询执行效率吗?

——影响到执行效率的是最终的查询query,你可以把mongoose的debug打开,看看query,然后在SQL分析工具中去分析,一般要靠数据库优化、查询语句的优化、程序的优化三个层次提升查询效率


0

0 学习 · 1842 问题

查看课程