【问题标题】:How to query mongodb with condition “like” in symfony2如何在 symfony2 中使用条件“like”查询 mongodb
【发布时间】:2013-04-16 15:39:09
【问题描述】:

我需要在我的 symfony2 应用中搜索用户

如果用户在搜索框中输入字母并提交,那么他需要让用户以该字母开头。

如何做到这一点? 下面的代码将获得我们在文本框中输入的确切用户。

如何在此应用“喜欢”查询

我的操作代码

public function searchAction(Request $request)
{

    $fname = $request->query->get('fname');
    if(isset($fname)){
    $user = $this->get('doctrine.odm.mongodb.document_manager')
        ->getRepository('WishbotWebBundle:User')
        ->findByusername($fname);
         return $this->render('WishbotWebBundle:Default:search.html.twig',array('user'=>$user));

    }else{
        return $this->render('WishbotWebBundle:Default:search.html.twig');

    }
}

【问题讨论】:

    标签: mongodb symfony


    【解决方案1】:

    首先,让我们看一下 MongoDB:使用 regex 进行搜索可以通过定义一个 regex 来完成,正如 here 解释的那样:

    db.users.find({"username": /^a/})
    

    同样可以在 php 中通过定义一个正则表达式来完成,解释 here:

    $collection->find(array('name'=> array('$regex' => '^a'));
    

    您可以在 Doctrine MongoDB ODM 中使用几乎完全相同的正则表达式语法:

    $user = $this->get('doctrine.odm.mongodb.document_manager')
            ->getRepository('WishbotWebBundle:User')
            ->findByUsername(array('$regex' => $fname));
    

    请注意,即使只找到一个,也会返回一组文档。上面的正则表达式还匹配用户名在任何地方包含$fname 字符串的所有文档。

    如果您想要以$fname 开头的用户名,您需要使用'^' . $fname

    【讨论】:

      猜你喜欢
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多