簡體   English   中英

Native Mongo Query Doctrine ODM

[英]Native Mongo Query Doctrine ODM

在關系數據庫的學說中,我們有QueryBuilder,可以手動編寫DQL查詢,如果真的必須,可以使用Doctrine的連接來執行原始SQL。 我沒有在doctrine的mongo項目中找到(在API中,也沒有文檔中)這樣做的方法。

如何使用mongo odm執行本機查詢? (除了注入doctrine_mongodb.odm.default_connection,還是真的唯一的方法?)

在文檔存儲庫中,您可以添加如下私有方法:

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;
}

然后,您可以從另一個存儲庫方法使用它,如下所示:

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

$ collection表示PHP MongoCollection( http://php.net/manual/en/class.mongocollection.php ),您可以使用本機Mongo查詢(通過類接口)。 你無法准確地編寫文字查詢,但是,通過界面,你可以做任何你想做的事,查詢,聚合等...

這是你需要做的?

問候

您可以使用此代碼訪問本機查詢的集合

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

然后你可以做的事情

$collection->aggregate($pipeline);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM