2016-03-20 3 views
0

J'ai un problème avec trouver une requête dans php-monogodb. find() sans conditions fonctionne bien mais lors de l'utilisation de la condition à l'intérieur de la méthode find(), il ne donnera aucun résultat. Comment résoudre ce problème?Comment écrire une requête de recherche avec condition dans php-mongodb?

$connection = new Mongo(); 
$db = $connection->selectDB('db1'); 
$collection = $db->selectCollection('customers'); 

$cursor = $collection->find(array('CUSTOMER_ID' => $id)); 

$num_docs = $cursor->count(); 

if($num_docs > 0) 
{ 
    foreach($cursor as $obj) 
    { 
     echo 'Customer-Id: '.$obj['CUSTOMER_ID']."\n"; 
     echo 'Customer Name: '.$obj['CUST_FIRST_NAME']." ".$obj['CUST_LAST_NAME']."\n"; 
     echo 'Customer Email: '.$obj['CUST_EMAIL']."\n"; 
     echo "\n\n\n"; 
    } 
} 

Après var_dump (cursor- $> expliquer()); il imprime:

array (size=3) 
    'queryPlanner' => 
    array (size=6) 
     'plannerVersion' => int 1 
     'namespace' => string 'db1.customers' (length=13) 
     'indexFilterSet' => boolean false 
     'parsedQuery' => 
     array (size=1) 
      'CUSTOMER_ID' => 
      array (size=1) 
       ... 
     'winningPlan' => 
     array (size=3) 
      'stage' => string 'COLLSCAN' (length=8) 
      'filter' => 
      array (size=1) 
       ... 
      'direction' => string 'forward' (length=7) 
     'rejectedPlans' => 
     array (size=0) 
      empty 
    'executionStats' => 
    array (size=7) 
     'executionSuccess' => boolean true 
     'nReturned' => int 0 
     'executionTimeMillis' => int 1 
     'totalKeysExamined' => int 0 
     'totalDocsExamined' => int 325 
     'executionStages' => 
     array (size=14) 
      'stage' => string 'COLLSCAN' (length=8) 
      'filter' => 
      array (size=1) 
       ... 
      'nReturned' => int 0 
      'executionTimeMillisEstimate' => int 0 
      'works' => int 327 
      'advanced' => int 0 
      'needTime' => int 326 
      'needYield' => int 0 
      'saveState' => int 2 
      'restoreState' => int 2 
      'isEOF' => int 1 
      'invalidates' => int 0 
      'direction' => string 'forward' (length=7) 
      'docsExamined' => int 325 
     'allPlansExecution' => 
     array (size=0) 
      empty 
    'serverInfo' => 
    array (size=4) 
     'host' => string 'deadpool' (length=8) 
     'port' => int 27017 
     'version' => string '3.2.4' (length=5) 
     'gitVersion' => string 'e2ee9ffcf9f5a94fad76802e28cc978718bb7a30' (length=40) 

Pouvez-vous expliquer ce qui ne va pas?

+0

Essayez d'imprimer votre requête comme var_dump ($ cursor-> explain()); pour voir si la requête est correcte. –

+0

Je l'ai fait et j'ai copié le résultat en dessous de ma question elle-même. Pouvez-vous me dire ce qui ne va pas, je suis nouveau à ce sujet. – luffy

Répondre

0

$cursor = $collection->find(array('CUSTOMER_ID' => $id)); D'où obtenez-vous la valeur de l'ID?

et essayez de ne pas utiliser id car parfois il a des problèmes pour trouver la valeur esp si $id est utilisé ailleurs.