Php 同时使用MongoDB Limit()和Skip()

Php 同时使用MongoDB Limit()和Skip(),php,mongodb,indexing,Php,Mongodb,Indexing,以下是查询: $collection->find(array("x"=>new MongoId("..."))->skip(5)->limit(10); 使用explain可得到以下结果: [n]=>10 [nscanned]=>15 [nscannedObjects]=>15 在“x”上有索引。因此,如果我跳过前5个文档,为什么扫描对象的数量是15而不是10?跳过5个,然后将结果限制为10,这意味着需要考虑15个项目,前5个将被跳过,下10个将被返

以下是查询:

$collection->find(array("x"=>new MongoId("..."))->skip(5)->limit(10);
使用explain可得到以下结果:

[n]=>10
[nscanned]=>15
[nscannedObjects]=>15

“x”
上有索引。因此,如果我跳过前5个文档,为什么扫描对象的数量是15而不是10?

跳过5个,然后将结果限制为10,这意味着需要考虑15个项目,前5个将被跳过,下10个将被返回

所以nscanned应该是15


nscannedObjects应该是10,但是,由于这个原因,它也显示为15

跳过五项,然后将结果限制为十项意味着需要考虑十五项,前五项将被跳过,下十项将被返回

所以nscanned应该是15


nscannedObjects应该是10,但是,由于这个原因,它也显示为15

@hakre这就是为什么nscaned应该是15。如果你不理解这个问题,请不要考虑评论。看看Asya的答案。这就是我所期待的。这是一个bug问题。不要在这里教数学。我比你懂数学。在服务器上,对象已加载。扫描对象。跳过操作在返回给客户端的内容上有所不同,但服务器正在报告要扫描的对象。我看不出有什么问题,认为bug报告是假的。我要说的是,通常mongodb开发人员都懒得清理打开的票据。@HakreThnx。因此,在使用索引的情况下,将跳过的文档加载到内存中不是效率低下吗?有什么解决办法吗?@Ashish:效率低吗?你测量过这个吗?解决什么问题?问题是你期望的号码是错误的?@hakre这就是为什么nscaned应该是15。如果你不理解这个问题,请不要考虑评论。看看Asya的答案。这就是我所期待的。这是一个bug问题。不要在这里教数学。我比你懂数学。在服务器上,对象已加载。扫描对象。跳过操作在返回给客户端的内容上有所不同,但服务器正在报告要扫描的对象。我看不出有什么问题,认为bug报告是假的。我要说的是,通常mongodb开发人员都懒得清理打开的票据。@HakreThnx。因此,在使用索引的情况下,将跳过的文档加载到内存中不是效率低下吗?有什么解决办法吗?@Ashish:效率低吗?你测量过这个吗?解决什么问题?问题是你打错电话了?好的。thnx。表示其余5个未加载到内存中。对,好。thnx。表示其余5个未加载到内存中。正当