2014-04-02 2 views
4

우리는 QueryBuilder가있는 관계형 데이터베이스에 대한 교리에서 DQL 쿼리를 수동으로 작성할 수 있으며 실제로해야한다면 Doctrine의 연결을 사용하여 원시 SQL을 실행할 수 있습니다. 나는 doctrine의 mongo 프로젝트에서이 일을 할 수있는 방법을 발견하지 못했다. (API 나 문서에는 없다.)Native Mongo Query Doctrine ODM

mongo odm을 사용하여 네이티브 쿼리를 실행하려면 어떻게해야합니까? 그런 다음

private function _getNativeConnection(){ 
    $connection = $this->getDocumentManager()->getConnection(); 
    $mongo = $connection->getMongo(); 
    if(!$mongo){ 
     $connection->connect(); 
     $mongo = $connection->getMongo(); 
    } 

    //You can use this as literal strings, or pass them as parameters to the method 
    $db = $mongo->selectDB('YOUR_MONGO_DB')->selectCollection("MONGO_COLLECTION"); 

    return $db; 
} 

, 당신은 할 수 있습니다 문서 저장소 내부

+0

안녕 같은 기본 쿼리

$collection = $documentManager->getDocumentCollection('Vendor\MyDocument'); 

그럼 당신이 할 수있는 것들에 대한 컬렉션을 액세스하려면이 코드를 사용할 수 있습니다! 나는 현재 같은 상황에 처해있어이 문제를 해결할 수 있었습니까? – rdiaz82

+0

아니요, 제 두 번째 단락에서 언급 한 접근 방식을 따라갔습니다. 컨테이너를 통한 연결 삽입. – Quant

답변

2

, 당신은이 같은 개인 방법을 추가 할 수 있습니다 (? 그렇다 doctrine_mongodb.odm.default_connection를 주입에서가, 또는 정말 유일한 방법입니다) 이 같은 다른 저장소 방법에서 사용 :

public function another_public_method{ 
    ... 
    $collection = $this->_getNativeConnection(); 
    ... 
} 

은 $ 수집하는 PHP MongoCollection (http://php.net/manual/en/class.mongocollection.php)을 나타내고, 그와 당신은 (클래스 인터페이스를 통해) 네이티브 몽고 쿼리를 사용할 수 있습니다. 리터럴 쿼리를 정확하게 작성할 수는 없지만 인터페이스를 통해 원하는 쿼리, 집계 등을 할 수 있습니다.

이것은 무엇을해야합니까?

감사

0

당신은

$collection->aggregate($pipeline);