在关系数据库理论中,我们有QueryBuilder,可以手动编写DQL查询,如果我们真的需要的话,可以使用doctrine的连接来执行原始的SQL。我还没有找到(在API和文档中也没有)在doctrine的mongo项目中做到这一点的方法。
如何使用mongo odm执行原生查询?(除了注入doctrine_mongodb.odm.default_connection,还是这真的是唯一的方法?)
发布于 2014-09-29 02:23:23
在您的文档存储库中,您可以添加一个私有方法,如下所示:
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 (http://php.net/manual/en/class.mongocollection.php),通过它你可以使用原生Mongo查询(通过类接口)。你不能准确地编写文字查询,但是,通过这个接口,你可以做任何你想做的事情,查询,聚合,等等。
这就是你需要做的?
问候
发布于 2015-07-04 11:30:24
可以使用此代码访问本机查询的集合
$collection = $documentManager->getDocumentCollection('Vendor\MyDocument');然后你可以做像这样的事情
$collection->aggregate($pipeline);https://stackoverflow.com/questions/22806127
复制相似问题