请知悉:本文最近一次更新为 5年 前,文中内容可能已经过时。

接手搜索引擎后,最近调优系统发现一个方法执行特别慢。仔细梳理后发现,这方法从MongoDB索引全量数据到Elasticsearch,而实际上,接口使用根本用不到全量数据,能用到1W就算是极限了。
最关键的是,分页多次索引,一次处理10条数据……简直ZZ……

调整了下方案,只索引点击数降序排序后的前2W的数据,并且分页单次索引量从10改为1000。

问题由此而来,降序怎么整?看了下前人的MongoDB的驱动写的……那自然是没有留下排序的功能……于是尝试改造其selectAll的接口。

顺手尝试用sort,报方法不存在,跟进源码,结合谷歌搜索的结果,匹配源码中的发现,使用方法addOrderBy即可。

示例:

->addOrderBy(['_cnt'=> SORT_DESC])

通过阅读源码你会发现,面向对象的一个好处,所有类似数据库的接口是都支持addOrderBy的。其他的接口可以参考:

vendor/yiisoft/yii2/db/QueryInterface.php

相关参考:https://stackoverflow.com/questions/31864128/sorting-inside-a-document-in-yii2-mongodb


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《Yii2 MongoDB query sort方式》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌