Projeção no MongoDB [com exemplos]

Publicados: 2020-09-15

MongoDB é um dos bancos de dados modernos mais famosos para lidar e gerenciar big data. É um banco de dados orientado a documentos NoSQL que usa documentos semelhantes a JSON para facilitar o gerenciamento de dados.

Várias ideias de projetos do MongoDB podem ser facilmente trazidas à vida. No entanto, o MongoDB também tem algumas desvantagens. Por padrão, qualquer consulta para um documento específico mostrará todos os dados - esse problema é resolvido com a ajuda da projeção do MongoDB .

Índice

O que é projeção no MongoDB?

A projeção no MongoDB limita a saída de dados a campos especificados em vez de mostrar todos eles. Isso é feito com a ajuda do método find(). O método find() aceita um parâmetro opcional que nos permite incluir ou excluir determinados campos de saída. Vamos nos aprofundar em como usar a projeção no MongoDB .

Sintaxe do método Find()

A projeção no MongoDB é feita com a ajuda do método find(), cuja sintaxe é:

banco de dados collection_name .find({}, { field_Key:1 ou 0 })

Na sintaxe acima, collection_name é o documento do qual precisamos recuperar os dados. Em seguida, existem dois parâmetros no método find() - o primeiro aceita uma consulta e o segundo é usado para projeção. O field_Key na sintaxe é o nome do campo que queremos incluir ou excluir.

Precisamos passar um valor booleano para cada field_ Key . Este valor define se queremos incluir o campo ou excluí-lo. Se inserirmos 1 em um campo, ele será mostrado nos resultados e, se incluirmos 0, ele ficará oculto.

O banco de dados de exemplo

Vamos criar um documento de exemplo em um banco de dados para que possamos consultá-lo ao longo deste artigo.

db.example.studentData([

{_id: ObjectId(“59kf63795bc1d”), student_name: “Alexander”, student_id: 01, student_status: “A”, student_age: 22}

{_id: ObjectId(“59ke62794bc1d”), student_name: “Steve”, student_id: 02, student_status: “A”, student_age: 23}

{_id: ObjectId(“59kg73795bf1e”), student_name: “Luke”, student_id: 03, student_status: “A”, student_age: 21}

{_id: ObjectId(“59kb69995ah1d”), student_name: “Bravo”, student_id: 04, student_status: “B”, student_age: 25}

])

Este é o nosso documento de banco de dados chamado example que usaremos como referência em todos os nossos exemplos.

Recuperando dados com e sem projeção no MongoDB

1. A sintaxe para recuperar sem projeção

Recuperando todos os campos (como não usando projeção) de alunos com student_status: “A.”

db.example.find({student_status: “A”})

Isso corresponde a Select * from example WHERE student_status = “A” query em SQL. A recuperação de dados sem projeção no MongoDB produzirá o seguinte resultado:

{“_id”: ObjectId(“59kf63795bc1d”), “student_name”: “Alexander”, “student_id”: 01, “student_status”: “A”, student_age: 22}

{“_id”: ObjectId(“59ke62794bc1d”), “student_name”: “Steve”, “student_id”: 02, “student_status”: “A”, “student_age”: 23}

{“_id”: ObjectId(“59kg73795bf1e”), “student_name”: “Luke”, “student_id”: 03, “student_status”: “A”, student_age: 21}

Por padrão, ele exibe todos os campos dos dados em que student_status = “A”. Para limitar os campos de saída podemos usar a projeção no MongoDB .

2. A sintaxe para recuperar com projeção

Recuperando student_name e student_status de todos os alunos.

db.example.find({}, {student_name: 1, student_status: 1})

Isso mostrará o seguinte resultado:

{“_id”: ObjectId(“59kf63795bc1d”), “student_name”: “Alexander”, “student_status”: “A”}

{“_id”: ObjectId(“59ke62794bc1d”), “student_name”: “Steve”, “student_status”: “A”}

{“_id”: ObjectId(“59kg73795bf1e”), “student_name”: “Luke”, “student_status”: “A”}

{“_id”: ObjectId(“59kb69995ah1d”), student_name: “Bravo”, student_status: “B”}

O _id é mostrado por padrão ao usar a projeção no MongoDB , a menos que o suprimimos.

Suprimindo _id ao usar projeção no MongoDB

Suprimindo o _id padrão e mostrando student_id, student_name e student_status de todos os alunos.

db.example.find({}, {_id: 0, student_id: 1, student_name: 1, student_status: 1})

Isso produzirá o seguinte resultado:

{“student_id”: 01, “student_name”: “Alexander”, “student_status”: “A”}

{“student_id”: 02, “student_name”: “Steve”, “student_status”: “A”}

{“student_id”: 03, “student_name”: “Luke”, “student_status”: “A”}

{“student_id”: 04, “student_name”: “Bravo”, student_status: “B”}

3. Combinando Inclusão e Exclusão

Excluindo _id e student_id, incluindo student_name e student_status de todos os alunos.

db.example.find({}, {_id: 0, student_id: 0, student_name: 1, student_status: 1})

Isso produzirá o seguinte resultado:

Erro: erro: {

“waitedMS” : NumberLong(0),

“ok”: 0,

“errmsg” : “A projeção não pode ter uma mistura de inclusão e exclusão.”,

“código”: 2

}

Combinar inclusão e exclusão ao usar a projeção do MongoDB gerará um erro porque não podemos executar as duas na mesma consulta. O campo _id é uma exceção a essa regra.

Você deve ter notado que usamos uma combinação de inclusão e exclusão em nosso exemplo anterior, onde suprimimos _id e mostramos alguns outros campos, e funcionou bem. Por causa da exceção à regra, excluímos _id e incluímos o restante dos campos.

4. Especificando a projeção no MongoDB por exclusão

Excluindo _id e student_status de todos os alunos e mostrando os demais campos.

db.example.find({}, {_id: 0, student_status: 0})

{“student_name”: “Alexander”, “student_id”: 01, “student_age”: 22}

{“student_name”: “Steve”, “student_id”: 02, “student_age”: 23}

{“student_name”: “Luke”, “student_id”: 03, “student_age”: 21}

{“student_name”: “Bravo”, “student_id”: 04, “student_age”: 25}

Você também pode usar os quatro operadores de projeção para limitar os campos de saída, mas eles não são suportados pelo método find(). Os operadores de projeção que podem ser usados ​​são $, $elemMatch, $slice e $meta.

Leia também: Casos de uso do mundo real do MongoDB

Conclusão

Com o uso de projeção no MongoDB , podemos assumir o controle da exibição de dados no front-end, o que aumenta seus casos de uso do mundo real . O MongoDB alcançou vários marcos nos últimos anos. Isso tornou o escopo futuro do MongoDB brilhante, e várias empresas estão procurando desenvolvedores full-stack com o conhecimento do MongoDB.

Agora é, portanto, um ótimo momento para incluir as habilidades do MongoDB em seu currículo. Mas então, apenas gerenciar um banco de dados não é suficiente no mundo competitivo de hoje. Portanto, ajudaria se você pretendesse se tornar um desenvolvedor full-stack ou aprender análise de negócios para entender e analisar os dados que está gerenciando e ajudar as empresas a ter um bom desempenho. O upGrad pode ajudá-lo a começar.

Nós da upGrad fornecemos fontes de aprendizado detalhadas, juntamente com experiência prática e assistência no trabalho. Colaboramos com vários institutos para oferecer a você o melhor da educação e da certificação. Você pode escolher se deseja optar pelo curso de certificação Business Analytics ou optar por um curso PG Diploma de desenvolvimento de software completo . O que quer que você queira seguir como carreira em sua vida, nós o cobrimos.

Aprenda cursos de desenvolvimento de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Lidere a revolução tecnológica orientada a dados

Programa Avançado de Certificação em Big Data do ITT Bangalore