MongoDB $ tamanho

MongoDB $ tamanho
Os operadores são muito úteis quando você precisa executar algo rapidamente sem executar consultas complexas. O MongoDB permite que o uso de operadores aprimore sua funcionalidade e faça processamento rápido no sistema de banco de dados. Um desses operadores do MongoDB é o operador de "tamanho", que até agora é utilizado para exibir o único registro do restante que contém um número específico de campos em um de seus campos de matriz. Em outras palavras, o operador de "tamanho" pode ser aplicado a um campo de matriz específico para verificar se esse campo tem um número específico de elementos dentro dele e exibir todo o registro do qual a matriz pertence. Portanto, este guia vai demonstrar o uso do operador de "tamanho" em MongoDB usando algumas consultas simples.

Criar coleção

Vamos procurar os bancos de dados já existentes em nosso mongodb primeiro. Para isso, vamos abrir a concha do MongoDB e executar sua instrução "Show DBS" na área de consulta, conforme fornecido. A saída para esta instrução mostra 3 bancos de dados internos com tamanhos diferentes enquanto trabalhamos em um banco de dados de "teste" dummy.

Teste> Mostrar DBS
Admin 40.00 Kib
Config 60.00 Kib
Local 72.00 Kib

Usando a instrução de "uso" junto com o nome do banco de dados "teste", você pode mudar para qualquer banco de dados, como fizemos abaixo. A saída mostra que já estamos usando o banco de dados "teste".

Teste> Usar teste
Já no teste de banco de dados

Vamos exibir todas as coleções disponíveis de um banco de dados de "teste" através da consulta "Show Collections". O detalhe da saída não mostra nada, pois não temos coleção agora.

Teste> Mostrar coleções;

Estamos criando uma nova coleção chamada "teste" no banco de dados "teste" que será usado mais adiante. Para isso, tentamos a consulta "db" com a função "createCollection" do MongoDB. O status de saída "OK: 1" mostra que a coleção é criada com sucesso.

Teste> dB.createCollection ("teste")
ok: 1

Exemplo # 01:

É hora de começar com o nosso primeiro exemplo adicionando alguns registros à coleção "teste" que acabamos de criar. Para fazer isso, vamos usar a função "inserir" do mongodb na mesma consulta "db" junto com o nome de uma coleção "teste". O registro que adicionamos contém 3 campos no total. Dois dos campos estão na forma de matriz I.e "PersonalDetails" e "AcademicRecord" contém subcampos. O uso de colchetes encaracolados mostra o número total de registros em uma coleção e o número total de campos dentro de um campo específico. Os registros foram adicionados perfeitamente.

Teste> dB.Teste.insert (name: "tina", personalDetails: [idade: 44, e -mail: "[email protected] "],
… AcademicRecord: [Qualificação: "BS", CGPA: 3.8])
Deprecaçãowarning: coleção.insert () está preterido. Use Instone, InsertMany ou Bulkwrite.

reconhecido: verdadeiro,
inserdIds: '0': objectId ("63B389FDA7AC5549359EBA32")

Para exibir todos os registros exibidos no shell do MongoDB, usaremos a função find () dentro da mesma instrução após o nome da coleção que também segue a função foreach (). A função foreach () imprime os registros no formato JSON, como mostrado abaixo.

Teste> dB.Teste.encontrar().foreach (printjson)

_id: objectId ("63B389FDA7AC5549359EBA32"),
Nome: 'Tina',
Detalhes pessoais: [

Idade: 44,
Email: '[email protected] '

],
Recorde acadêmico: [

Qualificação: 'BS',
CGPA: 3.8

]

É hora de usar o operador "tamanho" para exibir apenas o registro com um número específico de campos. Então, nós o utilizamos na função find () para obter o registro em que o campo Pessoal Details possui 2 registros de campo separados, cada registro dentro dos colchetes . A saída não mostra nada porque nenhum registro tem 2 campos dentro do campo Pessoal Detetas.

Teste> dB.Teste.encontre (pessoal pessoal: $ size: 2)

Ao definir o valor do operador de "tamanho" para 1 e executar a instrução atualizada, temos todo o registro com seus campos aninhados exibidos em nossa tela de casca do MongoDB como abaixo. A razão por trás dessa exibição é clara: o PersonalDetails tem 1 registro de acordo com os colchetes .

Teste> dB.Teste.encontre (personalDetails: $ size: 1)
[[

_id: objectId ("63B389FDA7AC5549359EBA32"),
Nome: 'Tina',
PersonalDetails: [idade: 44, e -mail: '[email protected] '],
AcademicRecord: [qualificação: 'BS', CGPA: 3.8]

]

Exemplo # 02:

Vamos adicionar outro registro de mesmo formato na coleção "teste" para ver se o operador de tamanho funciona em vários registros ou não. Esperava -se que a mesma consulta de inserção adicionasse registros para a pessoa "Beba". Embora tenhamos adicionado mais de um campo dentro dos poços pessoais e da matriz de registros acadêmicos, adicionando esses campos dentro do um par de colchetes encaracolados os considera como um registro.

Teste> dB.Teste.insert (name: "Beba", PersonalDetails: [Age: 44, e -mail: "[email protected] ", cidade:" California "], academicrecord: [qualificação:" ms ", cgpa: 3.9])

reconhecido: verdadeiro,
inserdIds: '0': objectId ("63B38C57A7AC5549359EBA33")

Depois de adicionar o segundo recorde, tentamos a mesma consulta para exibir os registros que temos na coleção "teste". Ambos os registros foram exibidos no formato padrão de matrizes em MongoDB.

Teste> dB.Teste.encontrar().bonito()
[[

_id: objectId ("63B389FDA7AC5549359EBA32"),
Nome: 'Tina',
PersonalDetails: [idade: 44, e -mail: '[email protected] '],
AcademicRecord: [qualificação: 'BS', CGPA: 3.8]
,

_id: objectId ("63B38C57A7AC5549359EBA33"),
Nome: 'Beba',
PersonalDetails: [idade: 44, e -mail: '[email protected] ', cidade:' California '],
AcademicRecord: [qualificação: 'MS', CGPA: 3.9]

]

Vamos executar a consulta de função "Localizar" para exibir os registros de uma coleção de testes enquanto utiliza o valor do operador "$ tamanho" definido como "3" que foi aplicado ao campo de poços de pessoal. Como o campo PersonalDetails não contém mais de 1 campo por enquanto, portanto a saída é nula.

Teste> dB.Teste.encontre (pessoal pessoal: $ size: 3).bonito()

Agora, atualizando o valor do operador "$ set" para 1, conforme demonstrado na consulta abaixo. O valor definido "1" demonstra que o único registro será mostrado na tela do console em que o campo "Peronaldettails" tem um único registro. Como os principais registros que adicionamos, segure campos únicos no campo de poços de pessoal i.e. , ambos os registros são exibidos.

Teste> dB.Teste.encontre (personalDetails: $ size: 1).bonito()
[[

_id: objectId ("63B389FDA7AC5549359EBA32"),
Nome: 'Tina',
PersonalDetails: [idade: 44, e -mail: '[email protected] '],
AcademicRecord: [qualificação: 'BS', CGPA: 3.8]
,

_id: objectId ("63B38C57A7AC5549359EBA33"),
Nome: 'Beba',
PersonalDetails: [idade: 44, e -mail: '[email protected] ', cidade:' California '],
AcademicRecord: [qualificação: 'MS', CGPA: 3.9]

]

Exemplo # 03:

Vamos inserir um novo registro na coleção "teste" através da função "Inserir". Desta vez, optamos por adicionar 3 campos no campo Pessoal Detalhes desta coleção, enquanto o campo “AcademicRecord” contém 2 registros dentro dele. Estaremos aplicando o operador de "tamanho" nele.

Teste> dB.Teste.insert (name: "Paul", PersonalDetails: [Age: 43, Email: "[email protected] ", City:" Texas "], AcademicRecord: [qualificação:" PhD ", cgpa: 4])

reconhecido: verdadeiro,
inserdIds: '0': objectId ("63B38D59A7AC5549359EBA34")

Agora que adicionamos um recorde aninhado na coleção "teste", estaremos exibindo -o na tela do console usando a instrução de função find (). Para exibir um registro específico, precisamos mencionar o nome de qualquer campo seguido por seu valor dentro de um registro específico i.e., Para exibir o registro em que o campo "Nome" tem seu valor "Paul". Apenas o último registro adicionado foi exibido.

Teste> dB.Teste.encontre (name: "Paul")
[[

_id: objectId ("63B38D59A7AC5549359EBA34"),
Nome: 'Paul',
PersonalDetails: [Age: 43, Email: '[email protected] ', City:' Texas '],
AcademicRecord: [qualificação: 'PhD', cgpa: 4]

]

Vamos mergulhar no exemplo de consulta para exibir os registros de uma coleção "Teste" para exibir apenas o registro com seu tamanho de campo pessoal igual a 3 i.e., tem 3 campos dentro dele. Para isso, tente a mesma função find () seguida pelo nome do campo "PersonalDetails", "$ size" Operator e a função pretty () para exibir a saída em uma matriz. O último registro que acabamos de adicionar foi exibido no console, pois sua matriz de "poços de pessoal" contém 3 registros de campo nele.

Teste> dB.Teste.encontre (pessoal pessoal: $ size: 3).bonito()
[[

_id: objectId ("63B38D59A7AC5549359EBA34"),
Nome: 'Paul',
PersonalDetails: [Age: 43, Email: '[email protected] ', City:' Texas '],
AcademicRecord: [qualificação: 'PhD', cgpa: 4]

]

Conclusão

Depois de passar por este guia junto com três dos exemplos de código mencionados, você poderá procurar o campo de matriz específico de um registro de dados específico que contém apenas o número de elementos através do operador de tamanho de MongoDB. Discutimos como uma matriz de múltiplos campos pode ser utilizada no registro para fazer o tamanho do operador funcionar usando a instrução de função find (). Nessas ilustrações, o campo de tamanho funciona para exibir todos os registros que têm um campo específico com um número específico de registros.