在关系数据库的学说中,我们有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查询(通过类接口).
你无法准确地编写文字查询,但是,通过界面,你可以做任何你想做的事,查询,聚合等…
这是你需要做的?
问候