sql >> データベース >  >> NoSQL >> MongoDB

オブジェクト配列の代わりにMongoDBカーソルを返すSymfonyQueryBuilder

    クエリを繰り返すには、EagerMongoDBカーソルが必要です。コードを編集して、簡単にできるようにします:

    class UserRepository extends DocumentRepository {
        public function getUserTemp($clauses = null)
        {
            /* Create query */
    
            $qb = $this->createQueryBuilder()->eagerCursor(true);
    
            /* Add clauses */
    
            if($clauses)
            {
                // It's a way to initialize the query, you can use a select or something similar
                $query = $qb->hydrate(true);
    
                if(isset($clauses['id']))
                    $query -> field('id') -> equals($clauses['id']);
    
                if(isset($clauses['firstName']))
                    $query -> field('firstName') -> equals($clauses['firstName']);
    
                if(isset($clauses['lastName']))
                    $query -> field('lastName') -> equals($clauses['lastName']);
    
                if(isset($clauses['email']))
                    $query -> field('email') -> equals($clauses['email']);
    
                if(isset($clauses['password']))
                    $query -> field('password') -> equals($clauses['password']);
            }
    
            /* Return */
    
            return $query
                -> getQuery()
                -> execute();
        }
    }
    

    これで、すべての結果を内部のオブジェクトとして結果を繰り返すことができます。

    private function getUserAction()
    {
        $manager = $this -> get('doctrine_mongodb') -> getManager();
        $repository = $manager -> getRepository('LogAnalyzerCoreBundle:User');
    
        $users = $repository -> getUserTemp(array(
            'firstName' => 'First'
        ));
        //It's just an example, but here you can see how to get the query result data
        foreach($users as $user){
            $data[] = $user->getFirstName();
        }
    
        return $users;
    }
    

    これを行うにはこれが最善の方法です。toArray()メソッドを呼び出すだけで十分な場合もありますが、常に機能するとは限りません。




    1. MongodbNoRMとPOCO

    2. MongoDB C#Aggregation-unwind-> groupBy

    3. mongodbの複数の条件で配列を更新します

    4. OSXでHomebrewを使用したPHP72MongoDBドライバー