Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luizcaquino

PHP + Mongodb usar match

Recommended Posts

Boa tarde, tenho uma collection no mongo com o nome disciplinas e o conteúdo é algo assim:

 

"ano" : 2001,
    "inclusao" : {
        "usuario" : {
            "id_usuario" : 1,
            "nome" : "Vladimir Ricardo Moresqui"
        },
        "data" : "2016-08-13 15:22:00"
    },
    "alteracao" : null,
    "exclusao" : null,
    "disciplinas" : [ 
        {
            "_id" : ObjectId("57b385ea631e4c43b7bcb7b4"),
            "nome" : "História"
        }
    ],

Para realizar a consulta dentro do mongo utilizo o seguinte script:

//Posso fazer assim
db.getCollection('questoes').aggregate([{$match:{"disciplinas.0.nome": "História"}}])

//Ou assim
db.getCollection('questoes').aggregate([{$match:{"disciplinas.nome": "História"}}])

Me retorna todas as questões da disciplina "História"

 

Meu problema está dentro do PHP, estou usando aggregate para buscar as informações do banco, se eu for buscar no campo ano consigo retornar normalmente, mas não consegui avançar quando tento retornar todas as questões disciplinas, pq o campo disciplina recebe um array.

 

	$pipeline = [
                array('$match' => array('disciplinas.0.nome' => 'História')), 
                [ '$sort' => ['nome' => 1 ]],
                [ '$limit' => 5000],
            ];

            $aggregate = new \MongoDB\Driver\Command([
                'aggregate' => 'questoes',                 
                'pipeline' => $pipeline,
            ]);

            $rows = $mng->executeCommand('foco', $aggregate);
            
            foreach ($rows as $row) {
                array_push($aux, $row);
            }          
            print_r(json_encode($aux));

O problema está em 

array('$match' => array('disciplinas.0.nome' => 'História')),

Se eu fizer 

array('$match' => array('ano' => 2001)),

 

Está me retornando, mas não estou conseguindo chegar até os dados da disciplina por ser um array.

 

Alguém já passou por essa dificuldade?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mateus.andriollo
      Alguém conhece algum componente em jquery ou js para parte visual de um calculo matemático, não sei dizer o nome, mas basicamente seria um componente para parâmetro visual de fórmula matermátiva.
       
      Tenho um app que faz questionários e as fórmulas como base, preciso ter um compenente visual para eles mesmos criarem os calculos.
       
      Pior que não encontro nada para dar como exemplo, mas basicamente seria algo como a linha do excel usando parenteses e validando os calculos, preciso que os valores sejam carregados como autocomplete...
    • Por Diego Rinno
      Boa noite!
       
      Tenho tentado estudar expressões regulares via preg_match mas não tenho me saído bem hehehe
       
      Alguma boa alma poderia me explicar a seguinte regex?
       
      /((?:f|ht)tp(?:s)?){1}:\/{2}(?:\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ Eu sei que ela detecta a existência de http:// ou https:// e www a fim de detectar a existência de um URL na variável, mas não sei, de fato, o que significa e como funciona cada bloco desses. Alguém poderia me explicar? Meu objetivo é criar uma que detecte até mesmo URLs do tipo site.com ou site.br ou www.site.com ou sub.dominio.com, etc.
    • Por Iskandar
      Saudações iMasters,
       
      Gostaria que me tirassem uma dúvida bem simples... qual a diferença entre match e exec, em uma expressão regular? Poderiam mostrar exemplos de ambas sendo usadas?
       
      Grato desde já e boas festas a todos.
      --
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.