如何使MongoDB查询更有效?

时间:2011-06-29 07:11:10

标签: mongodb indexing database

现在,我正在做两步。我想消除其中一个。

//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。

1 个答案:

答案 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

请注意,服务器将执行确定这两个数字所需的所有工作,如果服务器上的可用数据多于第一个结果返回的数据,则将发出新的计数查询。换句话说,更干净的代码,但并不总是更高的性能。