【发布时间】:2011-06-29 07:11:09
【问题描述】:
现在,我正在执行 2 个步骤。我想消灭其中一个。
//Get total results, before the limit. I need this number for pagination reasons.
total_rooms = db.rooms.find({'name':'big'}).count();
//Get the actual results
rooms = db.rooms.find({'name':'big'}).skip(start).limit(num)
我在我的网站上到处都在做双重查询,我觉得很傻。 Mysql 只要求我做一个查询,并给我total_results。
【问题讨论】:
-
如果您想要页数,您无法消除任何这些查询。即使您可以以某种方式组合它 - 数据库仍将在内部执行相同数量的操作。
-
谢谢keymone。第一个查询是否非常密集? (更好的问题:与第二个查询相比,它的强度如何)?
-
别担心。只要速度快,发出多个查询就可以了。确保你有一个关于“名字”的索引。您可以通过从分页切换到“显示更多”的 twitter 样式列表来消除获取计数的需要。