2016-03-20 2 views
0

У меня проблема с поиском запроса в php-monogodb. find() без условий работает нормально, но при использовании условия внутри find() метод не даст никаких результатов. Как решить эту проблему?Как написать запрос на поиск с условием в 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"; 
    } 
} 

После var_dump ($ cursor-> explain()); он печатает:

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) 

Можете ли вы объяснить, что происходит не так?

+0

Попробуйте напечатать свой запрос, например var_dump ($ cursor-> explain()); чтобы проверить правильность запроса. –

+0

Я сделал это, и я скопировал результат этого ниже моего вопроса. Можете ли вы сказать мне, что с ним не так, я новичок в этом. – luffy

ответ

0

$cursor = $collection->find(array('CUSTOMER_ID' => $id)); Откуда вы получаете значение id.

и не пытайтесь использовать идентификатор, так как иногда возникают проблемы с поиском значения esp, если $id используется в другом месте.

 Смежные вопросы

  • Нет связанных вопросов^_^