4.1 Método find()

O método find() do MongoDB seleciona documentos em uma coleção, ou visão, e retorna um cursor para os documentos selecionados. Sua sintaxe é:

db.coleção.find(consulta, projeção)

onde consulta especifica o filtro de seleção usando operadores de consulta, e projeção especifica quais campos do documento serão retornados.

Se os parâmetros forem omitidos, serão retornados todos os documentos com todos os seus campos. Se a consulta for especificada como um documento vazio ({}), serão retornados todos os documentos.

Exemplos de consulta utilizando a função find() na shell do MongoDB:

4.1.1 – Exibir todos os documentos da coleção pages, de forma elegante

> db.pages.find().pretty();

4.1.2 – Exibir o título dos cinco primeiros documentos da coleção pages

> db.pages.find({}, {title: 1}).limit(5);
{ "_id" : ObjectId("5aeccf4126df23113c5cb9e7"), "title" : "Morro da Viúva" }
{ "_id" : ObjectId("5aeccf4126df23113c5cb9e8"), "title" : "Morro da Viúva" }
{ "_id" : ObjectId("5aeccf4126df23113c5cb9e9"), "title" : "As Cadeirinhas" }
{ "_id" : ObjectId("5aeccf4126df23113c5cb9ea"), "title" : "A Lage" }
{ "_id" : ObjectId("5aeccf4126df23113c5cb9eb"), "title" : "Laranjeiras" }

4.1.3 – Exibir o título do quinto documento da coleção pages

> db.pages.find({}, {title: 1}).skip(4).limit(1);
{ "_id" : ObjectId("5aeccf4126df23113c5cb9eb"), "title" : "Laranjeiras" }

4.1.4 – Exibir o sumário (“excerpt”) de todos os documentos da coleção pages, com título Avenida Central, de forma elegante

> db.pages.find( {title : "Avenida Central"}, {excerpt: 1} ).pretty();
{
        "_id" : ObjectId("5aeccf4126df23113c5cba44"),
        "excerpt" : "A AVENIDA Central foi construída pelo Governo Federal, sob a direção do engenheiro . A Municipalidade não podia meter ombros a tal iniciativa: rasgar uma Avenida de 1.800 metros através de 18 ruas apinhadas de habitações e estabelecimentos que, por estarem no centro comercial, representavam propriedades de imenso valor. Os trabalhos de abertura do novo … Continue lendo \"Avenida Central\""
}
{
        "_id" : ObjectId("5aeccf4126df23113c5cbc1f"),
        "excerpt" : "Região localizada no entorno da antiga Avenida Central, atual Avenida Rio Branco, da Praça Mauá até a Avenida Beira Mar, incluindo o Largo da Carioca, a Cinelândia e o Passeio Público, limitada a leste pela região da Praça XV de Novembro e a Oeste pela região do Campo da Cidade e a Lapa, conforme mostrado … Continue lendo \"Avenida Central\""
}

4.1.5 – Exibir quantos documentos têm o título Canal do Mangue

> db.pages.find( {title : "Canal do Mangue" } ).count();
5

4.1.6 – Exibir os títulos dos documentos que contém a palavra Açúcar

> db.pages.find( { title: { $regex: /Açúcar/ } }, { title: 1 } );
{ "_id" : ObjectId("5aeccf4126df23113c5cba3f"), "title" : "Primeiras Escaladas do Pão de Açúcar" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbafd"), "title" : "Caminho Aéreo do Pão de Açúcar" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbb00"), "title" : "O Pão de Açúcar" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbb4f"), "title" : "Pão de Açúcar" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbb86"), "title" : "Caminho do Pão de Açúcar" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbbd5"), "title" : "Morro da Urca e Pão de Açúcar" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbbd8"), "title" : "Imagens da Praia Vermelha, Urca, Morro da Urca e Pão de Açúcar" }

4.1.7 – Exibir os títulos dos documentos que começam pela palavra Praça

> db.pages.find( { title: { $regex: /^Praça/ } }, { title: 1 } )
{ "_id" : ObjectId("5aeccf4126df23113c5cba98"), "title" : "Praça do Curro" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbacc"), "title" : "Praça do Capim" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbb40"), "title" : "Praça Tiradentes" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbb44"), "title" : "Praça do Comércio" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbbeb"), "title" : "Praça da República" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbc30"), "title" : "Praça XV de Novembro" }

4.1.8 – Exibir os títulos dos documentos que terminam com a palavra Glória

> db.pages.find( { title: { $regex: /Glória$/ } }, { title: 1 } );
{ "_id" : ObjectId("5aeccf4126df23113c5cba11"), "title" : "Rua Nossa Senhora da Glória" }
{ "_id" : ObjectId("5aeccf4126df23113c5cba17"), "title" : "Santuário de Nossa Senhora da Glória" }
{ "_id" : ObjectId("5aeccf4126df23113c5cba21"), "title" : "A Glória" }
{ "_id" : ObjectId("5aeccf4126df23113c5cba45"), "title" : "Relógio da Glória" }
{ "_id" : ObjectId("5aeccf4126df23113c5cba88"), "title" : "Nossa Senhora da Glória" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbb3a"), "title" : "Criação da Freguesia da Glória" }
{ "_id" : ObjectId("5aeccf4126df23113c5cbb73"), "title" : "15 de agosto de 1823, Dia de Nossa Senhora da Glória" }

4.1.9 – Exibir as páginas que têm a página Categorias como ancestral

> // Exibir o identificador (id) da página Categorias
> db.pages.find( { title : "Categorias" }, { id: 1} );
{ "_id" : ObjectId("5aeda0215485233a0c538de0"), "id" : 1459 }
> // Exibir os títulos das páginas filhas da página Categorias
> db.pages.find( { ancestors :  [1459] }, { title: 1, ancestors: 1} );
{ "_id" : ObjectId("5aeda0215485233a0c538dc1"), "title" : "Geografia, Biografia e História", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538dc8"), "title" : "Viagem", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538dca"), "title" : "Geodésia", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538dcd"), "title" : "Governo", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538de5"), "title" : "Economia", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538de7"), "title" : "Cidade", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538de8"), "title" : "Educação e Cultura", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538de9"), "title" : "Saúde e Assistência Social", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538deb"), "title" : "Religião", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538df0"), "title" : "Parques e Áreas Verdes", "ancestors" : [ 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538df1"), "title" : "Transporte", "ancestors" : [ 1459 ] }
> // Exibir os títulos de todas as páginas que têm a página Categorias como ancestral
> db.pages.find( { ancestors : { $all: [1459] } }, { title: 1, ancestors: 1} );
{ "_id" : ObjectId("5aeda0215485233a0c538b9f"), "title" : "Serviços Públicos", "ancestors" : [ 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538c8d"), "title" : "Religiosos", "ancestors" : [ 1118, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d68"), "title" : "Cemitérios", "ancestors" : [ 1118, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d6c"), "title" : "Calendário Eclesiástico", "ancestors" : [ 1118, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d79"), "title" : "Largo da Carioca", "ancestors" : [ 1115, 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d7c"), "title" : "Influências, no Barroco, da Terra e da Gente Brasileira", "ancestors" : [ 5325, 1126, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d7d"), "title" : "A Pseudo Degenerescência do Barroco", "ancestors" : [ 5325, 1126, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d7e"), "title" : "Influências de Além-Mar", "ancestors" : [ 5325, 1126, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d7f"), "title" : "A Causalidade e o Trânsito do Barroco", "ancestors" : [ 5325, 1126, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d81"), "title" : "O Barroco no Brasil", "ancestors" : [ 1126, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d82"), "title" : "Preliminar", "ancestors" : [ 5325, 1126, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d83"), "title" : "O Barroco", "ancestors" : [ 5325, 1126, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d86"), "title" : "Canal do Mangue", "ancestors" : [ 3588, 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d87"), "title" : "Morro da Urca e Pão de Açúcar", "ancestors" : [ 3588, 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d8b"), "title" : "Aqueduto da Carioca", "ancestors" : [ 4930, 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d8c"), "title" : "Chafariz de Mestre Valentim", "ancestors" : [ 4930, 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d8d"), "title" : "Chafariz da Praça São Salvador", "ancestors" : [ 4930, 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d8e"), "title" : "Chafariz de Grandjean de Montigny", "ancestors" : [ 4930, 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d90"), "title" : "Aquedutos, Fontes e Chafarizes", "ancestors" : [ 1299, 1459 ] }
{ "_id" : ObjectId("5aeda0215485233a0c538d91"), "title" : "Chafariz das Saracuras", "ancestors" : [ 4930, 1299, 1459 ] }
Type "it" for more
>

4.1.10 – Exibir os títulos das páginas filhas da página Categorias, usando o método forEach() no cursor retornado por find().

> db.pages.find(
...     { title : "Categorias" }
... ).forEach(
...     function(p) {
...         print( "id: " + p.id );
...         db.pages.find(
...             { "ancestors.0":  p.id }
...         ).forEach(
...             function(q) {
...                 print( "Título: " + q.title );
...             }
...         );
...     }
... );
id: 1459
Título: Geografia, Biografia e História
Título: Viagem
Título: Geodésia
Título: Governo
Título: Economia
Título: Cidade
Título: Educação e Cultura
Título: Saúde e Assistência Social
Título: Religião
Título: Parques e Áreas Verdes
Título: Transporte
>

4. Consultas ao texto