9
respostas

dúvida

bom dia, por que "notas" nao foi simplesmente criado como "notas" ? e colocaram chaves.

obrigada

9 respostas

O campo "notas" é uma das características do objeto que criamos no banco de dados, logo se trata de um objeto javascript.

Arrays dentro de arrays javascript não usam chaves, mas sim, colchetes.

Veja nesse insert:

db.alunos.insert(
  {
    "nome":"Aluisio",
    "data_nascimento": new Date(1992,02,12),
    "cursos": {
      "nome":"Gastronomia"
    },
    "notas": [3,4,6]
  }

)

Você está inserindo um objeto que vai ganhar um ID, correto? Esse objeto é um array. Para colocar um array dentro deste array, não podemos usar as chaves, pois do contrário, colocaríamos novas características a ele.

O que nós queremos é que a propriedade NOTAS: receba múltiplos valores. Do contrário, notas receberia novas propriedades. . . ficou claro?

Se não, me avisa que eu mando um exemplo :)

e o campo cursos? :)

é que "nome" e "data de nascimento" nao constam nada, simplesmente os valores, e os outros tem mais coisas

O campo cursos está recebendo várias propriedades. Veja a diferença: O campo cursos recebe

"nome":"Gastronomia",
"periodo" : "1 semestre"

e por ai vai. Veja que se você chamar cursos, você tem que perguntar pra ele: curso, me traz o seu nome, ou curso, qual é o seu semestre. Entende?

Já no caso das notas, elas são um conjunto de valores. Quando eu chamar a notas eu falo isso pro mongo: notas, quais são seus valores? E ele me diz com todos: 3,4,6.

Agora, se no nome não consta nada: faça uma query com

db.alunos.find()

E veja se realmente não consta nome nenhum.

Caso não conste nenhum nome, é por que você salvou o campo vazio ou sobrescreveu ele com o update sem se atentar para os campos vazios.

Ou seja:se não consta nada, é por que não tem nada.

Se realmente não tiver nada, retire os ids que não contém nenhuma informação e insira eles pelo insert de novo.

db.alunos.remove("_id: idDoSeuAluno");

Para melhorar a visualização, sempre use o .pretty() no fim das pesquisas com o find.

ah massa.. e em relação à data? não entendi muito bem.

no caso nome e data de nascimento fazem parte de qual objeto? porque o cursos é um objeto " separado", correto?

Não, cursos é um objeto dentro de outro objeto.

Essa é uma questão dos objetos Javascript

Veja só, no banco de dados, o que você manda é o seguinte:

db.alunos.insert(
  {
    "nome":"Aluisio",
    "data_nascimento": new Date(1992,02,12),
    "cursos": {
      "nome":"Gastronomia"
    },
    "notas": [3,4,6]
  }

)

O que o banco faz por debaixo dos panos é dar uma ID para esse elemento.

db.alunos.insert(
  {
    _ID: abc123asd456,
    "nome":"Aluisio",
    "data_nascimento": new Date(1992,02,12),
    "cursos": {
      "nome":"Gastronomia"
    },
    "notas": [3,4,6]
  }

)

O cursos na verdade é um objeto dentro de um objeto (Inception, sim, que nem o filme).

Por exemplo: imagine a sua escola e a sua cidade: a sua cidade é seu banco de dados e sua escola é uma entre muitas.

Para saber qual é a sua escola, você dá um nome e um endereço pra ela, no caso ID: abc123asd456

Só que a sua escola tem, além do nome, várias salas e cada um com uma turma, então eu posso dizer que dentro da escola, eu tenho um objeto com várias propriedades, pois a sala de química tem equipamentos de quimica e a sala de computação tem computadores

 {
    _ID: abc123asd456,
    "nome":"Escola Rimtimtim",
    "data_nascimento": new Date(1992,02,12),
    "salas": {
      "quimica":"equipamentos de química",
    "computação":"computadores"
    },

  }

)

hum,

entao salas tambem seria um objeto, dentro de outro e esse dentro de outro?

Na relação de data, o que você está fazendo quando coloca "data_nascimento":new Date (1994,02,26) você está determinando em que data foi o nascimento do indivíduo.

Veja bem , se ainda fosse nossa escola:

"data_inauguracao": new Date (1990, 20, 11 )

O que eu digo aqui é: javascript cria para mim uma data que vai ser 20/11/1990.

o que o comando new Datefaz é dizer para o javascript para criar uma data formatando ela com dia, mes e ano, do contrário apenas receberíamos números

o new Date faz parte da API de data do javascript que merece uma boa pesquisada para entender.

Basicamente, é isso

Espero ter ajudado, se tiver mais dúvidas, manda bala!

Para ser prático, sim, mas lembrando, como ele é um objeto dentro de outro, eu só posso acessá-lo se chamar o objeto principal antes:

db.escolas.find("salas.quimica");

Mas isso já se trata de buscar no front end.

"entao salas tambem seria um objeto, dentro de outro e esse dentro de outro?" Eu não entendi muito bem a pergunta, mas veja

salas é um objeto instanciado no ID criado pelo banco de dados.

O que nós dizemos para salas é que ele tem propriedades que só pertencem a ele.

O correto é dizer que salas é um objeto que possui propriedades e valores dentro do array de ID abc123asd456: .

Existe uma diferença entre o que é objeto e o qe é propriedade

O objeto é algo que pode receber propriedades e valores.

Nós podemos dizer que o que está dentro de SALA são propriedades e valores

E também podemos dizer que salas é tanto uma propriedade, que reside no ID abc123asd456 quando um objeto dele mesmo.

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