雖然這與PHP無關,但我在以下示例中使用了PHP。這是否會導致MongoDB性能問題(當通過'打斷'遊標在客戶端執行'limit')?
假設這是限制結果的'正常'方法。
$db->users->find()->limit(10);
這可能是最快的方式,但也有一些限制,在這裏...在下面的例子中,我將篩選出具有保存價值的某一列的前一行的所有行:
$cursor = $db->users->find();
$prev = null;
$results = array();
foreach ($cursor as $row) {
if ($row['coll'] != $prev['coll']) {
$results[] = $row;
$prev = $row;
}
}
但是,您仍然想要將結果限制爲10,當然。所以,你可以使用以下命令:
$cursor = $db->users->find();
$prev = null;
$results = array();
foreach ($cursor as $row) {
if ($row['coll'] != $prev['coll']) {
$results[] = $row;
if (count($results) == 10) break;
$prev = $row;
}
}
說明:由於$cursor
實際上並沒有從數據庫中加載的結果,break
荷蘭國際集團的foreach
-loop將limit
它只是爲limit(...)
- 功能一樣。
可以肯定的是,這是否正如我所說的那樣工作,或者是否有任何我不知道的性能問題?
非常感謝你, 添
非常感謝,這非常有幫助!你知道我怎樣才能在PHP中關閉'$ cursor'。例如,只是「不夠」而已? – elslooo 2011-05-10 16:58:46
'unset()'或者只是讓它超出範圍(*將函數初始化* *) – 2011-05-10 18:39:33
好的,非常感謝! – elslooo 2011-05-11 16:56:57