2013-08-19 94 views

回答

6

我會建議不要使用$where。規模會很緩慢。

對於這種用例,您需要將邏輯從查詢移動到文檔模式。在您的文檔中添加一個名爲「from_to_diff」的新屬性,並在文檔寫入時將其設置爲「from」 - 「to」。

然後,運行以下查詢:

$collection->find(array('from' => array('$gt' => 0)))

然後,創建的索引{from_to_diff:1}。您的索引將具有良好的基數,並且不會運行與$where一樣的大規模表掃描。

2

它應該是這樣的;)

$collection->find(array('$where' => 'this.from > this.to' )); 
相關問題