2013-07-16 152 views
0

我想將以下示例從mysql轉換爲Mongodb。嵌套選擇Mongodb查詢錯誤

但是,我被困在一個點。任何投入將不勝感激。

SQL查詢:

$cmd = "SELECT COUNT(*) FROM (SELECT * FROM pkt_tbl WHERE m_out_port= " . $out_port . " AND m_time<=" . $selPointX . " AND m_time>=" . $startTime . ") AS pkt_tbl WHERE m_in_port=" . $i; 

MongoDB的查詢(我試過):

$find_query = array('m_out_port'=>$out_port, 'm_in_port'=>$i,'m_time'=>array('lte' => $selPointX, 'gte'=>$startTime)); 
$find_projections = count(); 
$result = $table->find($find_query, $find_projections); 

我試過(除了代碼)什麼

我讀了mongodb文檔和其他PHP.NET(Mongodocs),但仍然無法找到d相關解決方案。

我不確定它是否正確/我要走正確的道路。

請說明。 - R

+0

請檢查。哎呀。我現在改了它。它看起來不錯,還是我需要做其他事情? –

+0

回答後請不要太改變你的問題。如果它不起作用,或者您還有其他問題,請使用評論。現在你的錯誤是你錯過'$ gte'和'$ lte'中的'$'。 – sashkello

+0

因爲現在答案是回答不同的問題,你會看到... – sashkello

回答

0

您需要針對日期範圍(大於或等於且小於或等於)使用$gte$lte關鍵字。現在只選擇日期等於startTimeselPointX的記錄(如果它們不同,則不會返回任何值)。

更改時間的情況:

'm_time'=>array('$lte' => $selPointX, '$gte'=>$startTime) 

如果你需要這些時間不包括,那麼使用$gt和/或$lt

+0

感謝您的有用評論。糾正。 –

+0

看起來像執行後,我在'$ find_projections = count();面臨錯誤''這種方式使用Select count(*)是否合適? –

+0

我想你只需要$ result = $ table-> count($ find_query) – sashkello