2013-11-14 3 views
0

2 개의 콜렉션, 카테고리 및 제품이 있습니다. 각 제품에는 category_id가 있습니다. 제품 수와 함께 카테고리 이름을 나열하고 싶습니다 ... 나는 1 개의 루핑과 2 개의 쿼리로이 작업을 수행했습니다. 하지만 나는 이것을 하나의 쿼리로 만들고 싶다. mongo DB에서 생성하는 방법은 무엇입니까?mongo db - 다른 콜렉션의 수를 가진 테이블 레코드 얻기

public function GetCategories(){ 

    $data = array(); 

    $this->cimongo->where(array('status'=>'1')); 
    $query = $this->cimongo->get('category'); 
    foreach($query->result_array() as $category){ 
     $data[] = array(
      'keyword'  => $category['keyword'], 
      'name'   => $category['name'], 
      'total'   => $this->GetTotalWordsByCategoryId($category['_id']) 
     ); 
    } 
    return $data; 
} 
+1

하나의 쿼리로 두 개의 컬렉션을 쿼리 할 수 ​​없습니다. – WiredPrairie

답변

1

단일 쿼리로 만들 수있는 것은 절대 없습니다. Mongodb에는 조인이 없으므로 첫 번째 컬렉션에 대한 두 번째 컬렉션에 대한 정보를 저장해야하는 하나의 쿼리로 만들려면이 때문에 조인이 필요하지 않습니다.

+0

괜찮아요. 맵 축소로 할 수 있을까요? – balaphp

+1

아니요, mapreduce도 컬렉션 수준에서 작동합니다. 모든 조인은 응용 프로그램 계층에서 수행되어야합니다. –