2011-12-07 101 views
0

如何查找包含兩個對象的行?示例:

$m = new Mongo(); 
    $db = $m->mydb->user_tokens; 
    $cursor = $db->findOne(array('$and' => array('user_id' => $userid, 'token_id' => $tokenid))); 

我不確定您是否可以在PHP中執行此操作。我有一個python後端服務器,我可以做類似這樣的事情,但也需要能夠在前端上完成。

+0

請一個更好的問題標題不是關鍵字的轉儲。 –

回答

3

您不需要$和限定符;只要設定你的兩個條件應該可以正常工作

在php中,我發現有用的一件事就是接受你的查詢;然後執行:

echo(json_encode($query)); 

這樣你可以把你的查詢,並嘗試直接在控制檯上,以確認它顯示你在想什麼它應該。

遠一點到解釋上面.. 目前,這是你在查詢什麼:

{"$and":{"user_id":"userId","token_id":"tokenId"}} 

我發現了這一點做

echo(json_encode(array('$and' => array('user_id' => 'userId', 'token_id' => 'tokenId')))); 

你希望被要麼做:

{"$and":[{"user_id":"userId"},{"token_id":"tokenId"}]} 

or 

{"user_id":"userId","token_id":"tokenId"} 

創建查詢時查找的有用表單:

SQL to Mongo Cheat Sheet

+0

注意:如果你在第二個操作符上做了類似於GTE的事情,那麼你會想要使用和,並且你需要在你的用戶標識符附近添加一個數組(),使用tokenid來創建數組外觀。看到這裏:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24and – Petrogad

+0

我已閱讀DOCS和備忘單,但實際上沒有在PHP中解釋它。當我使用兩種條件時,如果有兩份文件具有相同的條件,那麼它將顯示所有條件相同的結果。我嘗試了'$ cursor = $ db-> findOne(array('$ and'=> array('user_id'=> $ userid),array('token_id'=> $ tokenid)));'但是,頁面將不會加載.. – Bobby

+0

'{「$和」:[{「user_id」:「userId」},{「token_id」:「tokenId」}]}'適用於JavaScript,不適用於PHP。 @Frederico – Bobby