2011-12-07 4 views
0

Comment trouver une ligne avec deux objets? Exemple:

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

Je ne suis pas sûr si vous pouvez même faire cela en PHP. J'ai un serveur backend python que je peux faire quelque chose de similaire à cela, mais je dois aussi pouvoir le faire sur le frontend.

+0

S'il vous plaît faire un meilleur titre de la question d'une décharge de mots-clés. –

Répondre

3

Vous n'avez pas besoin du $ et du qualificatif; le réglage de vos deux conditions devrait fonctionner correctement.

En PHP une chose que j'ai trouvé utile est de prendre votre requête; puis faire:

echo(json_encode($query)); 

De cette façon, vous pouvez prendre votre requête et essayer directement sur la console pour confirmer qu'il nous montre ce que vous pensez qu'il devrait.

Un peu plus loin dans ce qui précède explique .. actuellement c'est ce que vous vous interrogez sur:

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

J'ai trouvé cela en faisant

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

Vous voulez faire soit :

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

or 

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

Feuille utile à rechercher lors de la création de vos requêtes:

SQL to Mongo Cheat Sheet

+0

REMARQUE: si vous faites quelque chose comme un GTE sur le second opérateur que vous voulez utiliser et que vous avez besoin d'un tableau supplémentaire() autour de votre ID utilisateur, tokenid pour créer l'apparence du tableau. Voir ici: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24and – Petrogad

+0

J'ai lu les DOCS et la feuille de triche mais ne l'explique pas vraiment en PHP. Quand j'utilise les deux conditions s'il y a 2 documents avec une des mêmes conditions que cela montre tous les résultats avec la même condition. J'ai essayé '$ cursor = $ db-> findOne (array ('$ et' => array ('user_id' => $ userid), array ('token_id' => $ tokenid)));' Mais cela rend le page à ne pas charger .. – Bobby

+0

'{" $ and ": [{" user_id ":" userId "}, {" token_id ":" tokenId "}]}' 'fonctionnerait pour javascript, pas pour PHP. @Frederico – Bobby

Questions connexes