2014-06-13 3 views
0

Je dois trouver dans un tableau enregistré dans un document de Mongodb.Mongodb + PHP => Rechercher un opérateur de requête dans un tableau multidimensionnel

Voici le document:

{ 

"hashtag" : "World", 
"topimages" : [ 
     { 
      "cluster" : "france", 
      "id_tw" : "477170636327227393" 
     }, 
     { 
      "cluster" : "france", 
      "id_tw" : "477170636327227396" 
     } 

    ] 

} 

Et je veux rechercher si un document intitulé « World » par la touche « hashtag », ont déjà un tweet enregistré dans le tableau « topimages » avec un id « id_tw "de la valeur: « 477170636327227393 »

Ce que je suis en train de faire est:

$query = array('hashtag' => "World", array('topsimages.$.id_tw' => "477170636327227393")); 
$xpmm->find($query); 

Je dois rechercher si un document intitulé « World » a déjà un tweet enregistré dans le tableau « topimages » par le sien clé "id_tw".

Merci beaucoup.

#

Solution:

$query = array('hashtag' => "france", 'topimages.id_tw' => "477170282852286464"); 

Répondre

0

topimages.x ne fonctionne que si elle était un sous-document, pas un tableau. Vous voulez $elemMatch (Mongo DB Documentation)

$query = array('hashtag' => "World", 'topsimages' => array("$elemMatch" => array("id_tw" => "477170636327227393"))); 
+0

Il ne fonctionne pas aussi avec: '$ query = array ('hashtag' => "France", array ('topimages '=> array (' $ elemMatch '=> array ("id_tw" => "477170636327227393")))); ' – Xanarus

+0

Réessayez avec le code en réponse. J'ai ajouté un tableau supplémentaire autour des topimages par erreur la première fois. – kwolfe

0

C'est ok à l'aide:

$query = array('hashtag' => "france", 'topimages.id_tw' => "477170282852286464"); 
Questions connexes