Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Find não encontra valor

Amigos,

Minha inserção foi assim :

db.alura_mongodb.insert({      
    "Nome" : "Marcelo",
    "Cursos" : [ 
        {
            "Curso1:" : "JavaI",
            "Curso2:" : "PHP",
            "Curso3:" : "Scala"
        }
    ],
    "Idade" : 35.0,
    "Date" : new Date(2017,01,4)
})

Ao tentar pesquisar não trás resultado:

db.alura_mongodb.find({ "Cursos.Curso1" : "JavaI" })

O que esta errado ?

Att Vitor

3 respostas
solução!

Olá Vitor, tudo bem?

O problema com sua consulta é que você está fazendo a pesquisa no array por um objeto que não existe.

Nesse trecho de código você declarou um array contendo somente um elemento:


 "Cursos" : [ 
        {
            "Curso1:" : "JavaI",
            "Curso2:" : "PHP",
            "Curso3:" : "Scala"
        }
    ],

O único elemento dentro desse array é um objeto com três atributos: "Curso1:", "Curso2:" e "Curso3:"

Para realizar a consulta precisamos passar o objeto completo com os três atributos:

db.alura_mongodb.find({"Cursos":{ "Curso1:" : "JavaI", "Curso2:" : "PHP", "Curso3:" : "Scala" } })

Creio que o que você gostaria de declarar era algo assim:

 "Cursos" : [       
          {"Curso" : "JavaI"},
          {"Curso" : "PHP"},
          {"Curso" : "Scala}"        
    ],

Dessa forma você consegue fazer a consulta assim:

db.alura_mongodb.find({"Cursos.Curso":"JavaI"})

Um outro problema é que os atributos do seu objeto dentro do array estão sufixados com ":" (dois pontos). "Curso1:", "Curso2:", "Curso3:".

Isso pode gerar confusão na hora de montar a consulta.

Espero ter ajudado.

Fernando obrigado !

Ola. Andei observando o codigo e percebi que ao chamar sua coleção acabou esquecendo os " : " que inseriu ao criar seus nome de cursos:

db.alura_mongodb.find({ "Cursos.Curso1" : "JavaI" })
------------------------------------> :"<-

E nas informaçoes com os nomes do curso, inseriu os ":" ao final de nomes:

 "Cursos" : [ 
        {
            "Curso1:" : "JavaI",
            "Curso2:" : "PHP",
            "Curso3:" : "Scala"
------------------> "<-----
        }
    ],

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software