mongodb - 如何在symfony2中查询条件为 “like”的mongodb

标签 mongodb symfony

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

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

如何实现这一目标? 下面的代码将获取我们在文本框中输入的确切用户。

如何在此应用“like”查询

我的操作代码

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:可以通过定义正则表达式来完成使用正则表达式的搜索,如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.

关于mongodb - 如何在symfony2中查询条件为 “like”的mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16029684/

相关文章:

symfony - Symfony2 中的 LDAP 集成

php - 使用 Symfony 2 在 Twig 中本地化日期

php - 我如何让 Symfony 在所有响应中指定我的字符集?

php - Symfony 4 不 Autowiring 动态路由 Controller

javascript - 如何从 AngularJS 范围中删除项目

java - 使用实体属性更新文档而不是替换它(保留未映射的属性)

MongoDB:使用 $substr 添加基于现有字段的新字段

node.js - 如何在 Node.js 中创建 session

node.js - Mongoose 组和计数

php - 检查记录是否成功插入 Symfony2