2013-11-03 1 views
-1

일치 : 나는 또한과 PHP 배열이문서는 정확한 이제 우리는 다음과 MongoDB를 수집 있다고 가정 해 봅시다

{id:1, data:"some_data"} 
{id:2, data:"some_data"} 
{id:3, data:"some_data"} 
{id:4, data:"some_data"} 

을 요소 내가 만약 컬렉션

$q = [1,3,6]; 

에없는 "6" 이 같은 컬렉션을 조회 :

$cursor = $db->col->find(['id' => ['$in' => $q]]); 

을 나는 ID의 1과 3

문서를 받고 있어요

하지만 ID가 컬렉션에 존재하지 않으므로 공백 값을 넣고 싶습니다. 컬렉션과 정확히 일치시킬 수있는 방법은 무엇입니까?

하나의 검색어로이 작업을 수행 할 수 있습니까?

+0

'q = [1,3]'이면 무엇을 얻고 싶습니까? –

+0

물론 ID가 1과 3 인 문서가 있지만 현재 컬렉션에 있기 때문에. – user2624744

+0

그래서'q = [1,3,6]'이라면'find'가 0, 1, 2 또는 3 문서를 돌려 주길 원합니까? –

답변

0

id 경우 고유 : 그것은 이러한 기능이 없기 때문에

var result = db.col.find({id:{$in:q}}); 
if(result.count() == q.length) { 
    //handle result 
} else { 
    //handle empty result 
} 
+0

하지만 PHP로하고 싶다면 어떻게해야할까요? PHP 배열이 있다고 가정 해 보겠습니다. $ q = [1,2,3,6]; $ cursor = $ db-> col-> find ([ "id"=> [ '$ in'=> $ q]]); 이 쿼리는 모든 데이터를 푸시 다운합니까? – user2624744

+0

귀하의 질문에 해당 태그를 추가하는 것이 좋습니다. 저는 개인적으로 PHP를 피합니다. –

0

당신은, 하나 개의 MongoDB의 쿼리와 함께이 작업을 수행 할 수 없습니다.

$q = [1,3,6]; 
$res = array(); 
$cursor = $db->col->find(['id' => ['$in' => $q]]); 
foreach($cursor as $val){ 
    $res[$val['id']] = $val['data']; 
} 

foreach($q as $val){ 
if (!isset($res[$val])) $res[$val] = ''; // to show that there is nothing in the results. 
} 

추신 : 정확히이 필요합니까, 당신이 이런 일을 달성 할 수있는 이유를 이해하지 못하는 또한

이 코드를 시도하지 않았으므로 오류가있을 수 있습니다.