mongodb – 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查询(通过类接口).
你无法准确地编写文字查询,但是,通过界面,你可以做任何你想做的事,查询,聚合等…

这是你需要做的?

问候

点赞