我对mongodb的表现有疑问。基本上我们假设我们有一个名为items
的集合,我们想要查询。当然,我将限制查询,以便在单个页面加载期间不检索太多内容。这样的事情可以做到:
db.items.find(/* some condition */).sort( { timestamp : -1 } ).limit(10);
这是一个典型的例子。这么典型我直接从mongodb的网站上直接看到它。哈哈哈!
现在真正的问题是:在限制/排序游标中包含的数据之前,我可以对游标中包含的所有数据进行全局计数吗?像这样:
var curs = db.items.find(/* some condition */);
curs.count(); // is this a resource consuming operation??? <<<
curs.sort( { timestamp : -1 } ).limit(10);
或者它是否会成为重载操作,因为与find
中的条件匹配的结果数量会增加?
由于
答案 0 :(得分:1)
(大多数)MongoDB驱动程序中的count方法实际默认情况下计数没有跳过和限制。
实际上,true
的附加参数会使其与跳过和限制一起计算。
因此,即使在跳过和限制之后,您也可以进行全局计数。
然而,值得注意的是,进行计数实际上会在MongoDB中执行计数,即使已经进行了许多改进以使计数更快,但仍然会非常昂贵。
这取决于您的数据大小,但如果您在结果中有100,000行的区域,则不应该面临太多问题。