现在,我正在做两步。我想消除其中一个。
//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。
答案 0 :(得分:1)
您只需要一个查询。在shell中试试这个:
for(var i = 0; i < 1000; i++) db.test.save({a:i})
cursor = db.test.find().skip(10).limit(10)
现在,您可以获得总结果集大小:
cursor.count()
1000
结果集大小考虑了跳过和限制:
cursor.count(true)
10
请注意,服务器将执行确定这两个数字所需的所有工作,如果服务器上的可用数据多于第一个结果返回的数据,则将发出新的计数查询。换句话说,更干净的代码,但并不总是更高的性能。