首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原生Mongo查询规则ODM

原生Mongo查询规则ODM
EN

Stack Overflow用户
提问于 2014-04-02 16:50:57
回答 2查看 2.7K关注 0票数 4

在关系数据库理论中,我们有QueryBuilder,可以手动编写DQL查询,如果我们真的需要的话,可以使用doctrine的连接来执行原始的SQL。我还没有找到(在API和文档中也没有)在doctrine的mongo项目中做到这一点的方法。

如何使用mongo odm执行原生查询?(除了注入doctrine_mongodb.odm.default_connection,还是这真的是唯一的方法?)

EN

回答 2

Stack Overflow用户

发布于 2014-09-29 02:23:23

在您的文档存储库中,您可以添加一个私有方法,如下所示:

代码语言:javascript
复制
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;
}

然后,您可以从另一个存储库方法中使用它,如下所示:

代码语言:javascript
复制
public function another_public_method{
    ...
    $collection = $this->_getNativeConnection();
    ...
}

$collection代表一个PHP (http://php.net/manual/en/class.mongocollection.php),通过它你可以使用原生Mongo查询(通过类接口)。你不能准确地编写文字查询,但是,通过这个接口,你可以做任何你想做的事情,查询,聚合,等等。

这就是你需要做的?

问候

票数 2
EN

Stack Overflow用户

发布于 2015-07-04 11:30:24

可以使用此代码访问本机查询的集合

代码语言:javascript
复制
$collection = $documentManager->getDocumentCollection('Vendor\MyDocument');

然后你可以做像这样的事情

代码语言:javascript
复制
$collection->aggregate($pipeline);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22806127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档