Como iterar o cursor para exibir todos os resultados
Este tutorial descreve como retornar todos os resultados de uma query do Atlas Search iterando o cursor até que ele se esgote. Por padrão, alguns clientes do Atlas Search, como mongosh
e MongoDB Compass imprimem até os primeiros documentos 20 nos resultados. Para ver todos os resultados de uma só vez, recomendamos que você itere o cursor até que ele se esgote. Para demonstrar como iterar o cursor para visualizar todos os resultados, este tutorial o conduz pelas seguintes etapas:
Configure um índice do Atlas Search com mapeamento dinâmico no
sample_mflix.movies
coleção.Execute uma query do Atlas Search que itera seu cursor até que ele se esgote para recuperar todos os documentos que contêm o termo
summer
no campotitle
.
Para criar um índice do Atlas Search, você deve ter acesso do Project Data Access Admin
ou superior ao projeto.
Crie o Índice Atlas Search
Nesta seção, você cria um índice de pesquisa do Atlas que utiliza mapeamento dinâmico para indexar automaticamente todos os campos dinamicamente indexáveis na collection do sample_mflix.movies
.
No Atlas, VáGo para a Clusters página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Acesse a página do Atlas Search do seu cluster.
Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.
Na barra lateral, clique em Atlas Search sob o título Services.
No menu suspenso Select data source, selecione seu cluster e clique em Go to Atlas Search.
A página Atlas Search é exibida.
Clique no botão Browse Collections para o seu cluster.
Expanda o banco de dados e selecione a coleção.
Clique na guia Search Indexes da coleção.
A página Atlas Search é exibida.
Clique no nome do seu cluster.
Clique na aba Atlas Search.
A página Atlas Search é exibida.
Selecione um Atlas Search Configuration Method Nexte clique em.
Para uma experiência abada, selecione a Pesquisa Atlas Visual Editor.
Para editar a definição de índice bruto, selecione a Pesquisa Atlas JSON Editor.
Insira o Index Name e defina Database and Collection o.
No campo Index Name, digite
iterate-cursor-tutorial
.Se você nomear seu índice
default
, não precisará especificar um parâmetroindex
no estágio do pipeline $search . Se você der um nome personalizado ao seu índice, deverá especificar este nome no parâmetroindex
.Na seção Database and Collection, localize o banco de dados
sample_mflix
e selecione a coleçãomovies
.
Especifique uma definição de índice.
A seguinte definição de índice indexa dinamicamente os campos de tipos suportados na collection. Você pode usar o Visual Editor do Atlas Search ou o JSON Editor do Atlas Search na interface de usuário do Atlas para criar o índice.
Clique em Next.
Revise a definição de índice padrão para a coleção.
Clique em Next.
Revise a definição do índice.
A definição do seu índice deve ser semelhante a esta:
{ "mappings": { "dynamic": true } } Clique em Next.
Execute as queries de amostra
➤ Use o menu suspenso Selecione seu idioma para selecionar o cliente MongoDB que você deseja usar para executar as queries de exemplo nesta página.
Nesta seção, você se conecta ao seu cluster do Atlas e executa queries no campo title
na coleção sample_mflix.movies
para pesquisar o termo Summer
com o operador de texto. A coleção inclui mais 75 documentos que contêm o termo Summer
no título, mas, por padrão, alguns clientes do Atlas Search imprimem apenas os principais 20 resultados para a query.
Para visualizar todos os resultados do termo de consulta de uma só vez, você itera pelo cursor até esgotar o cursor.
Conecte-se ao seu cluster mongosh
usando.
Abra o mongosh
em uma janela do terminal e conecte ao seu cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via mongosh
.
Use o sample_mflix
banco de dados do.
Execute o seguinte comando no prompt mongosh
:
use sample_mflix
switched to db sample_mflix
Execute as seguintes consultas do Atlas Search na coleção.<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \"movies
height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
Na query a seguir, use o método toArray() para iterar o cursor e retornar os documentos que correspondem aos critérios de query em uma array.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "index": "iterate-cursor-tutorial", 5 "text": { 6 "query": "summer", 7 "path": "title" 8 } 9 } 10 }, 11 { 12 "$project": { 13 "_id": 0, 14 "title": 1 15 } 16 } 17 ]).toArray()
1 [ 2 { title: 'Summer' }, 3 { title: 'Summer Stock' }, 4 { title: 'Violent Summer' }, 5 { title: 'Indian Summer' }, 6 { title: 'Indian Summer' }, 7 { title: 'Summer Rental' }, 8 { title: 'Summer Things' }, 9 { title: 'Wolf Summer' }, 10 { title: 'Summer Storm' }, 11 { title: 'Summer Palace' }, 12 { title: 'Eternal Summer' }, 13 { title: 'Summer Holiday' }, 14 { title: 'Summer Wars' }, 15 { title: 'Summer Games' }, 16 { title: 'Summer Nights' }, 17 { title: 'A Summer Place' }, 18 { title: 'Summer and Smoke' }, 19 { title: 'The Endless Summer' }, 20 { title: "Summer of '42" }, 21 { title: 'That Certain Summer' }, 22 { title: 'One Deadly Summer' }, 23 { title: 'Summer Camp Nightmare' }, 24 { title: 'An Unforgettable Summer' }, 25 { title: 'Summer of Sam' }, 26 { title: 'Bullets Over Summer' }, 27 { title: 'Summer in Berlin' }, 28 { title: 'A Plumm Summer' }, 29 { title: 'Summer Heights High' }, 30 { title: 'Summer of Goliath' }, 31 { title: 'Red Hook Summer' }, 32 { title: 'Ping Pong Summer' }, 33 { title: 'Summer of Blood' }, 34 { title: 'The End of Summer' }, 35 { title: 'Summer Wishes, Winter Dreams' }, 36 { title: "A Summer at Grandpa's" }, 37 { title: 'Cold Summer of 1953' }, 38 { title: 'A Brighter Summer Day' }, 39 { title: 'Summer of the Monkeys' }, 40 { title: 'A Storm in Summer' }, 41 { title: 'Wet Hot American Summer' }, 42 { title: 'My Summer of Love' }, 43 { title: 'Nasu: Summer in Andalusia' }, 44 { title: 'A Summer in Genoa' }, 45 { title: '(500) Days of Summer' }, 46 { title: 'Summer Days with Coo' }, 47 { title: 'The Kings of Summer' }, 48 { title: 'May in the Summer' }, 49 { title: 'A Horse for Summer' }, 50 { title: 'The Summer of Sangaile' }, 51 { title: 'Smiles of a Summer Night' }, 52 { title: 'Shadows of a Hot Summer' }, 53 { title: 'That Summer of White Roses' }, 54 { title: 'Last Summer in the Hamptons' }, 55 { title: 'A Summer in La Goulette' }, 56 { title: 'A Summer by the River' }, 57 { title: 'Summer in the Golden Valley' }, 58 { title: 'How I Ended This Summer' }, 59 { title: 'And They Call It Summer' }, 60 { title: 'Spring, Summer, Fall, Winter... and Spring' }, 61 { title: 'The Last Summer of La Boyita' }, 62 { title: 'The Mafia Only Kills in Summer' }, 63 { title: 'I Know What You Did Last Summer' }, 64 { title: 'I Know What You Did Last Summer' }, 65 { title: 'Judy Moody and the Not Bummer Summer' }, 66 { title: 'I Still Know What You Did Last Summer' } 67 ]
Na query a seguir, use o método forEach() para iterar o cursor e aplicar a função JavaScript printjson
a cada documento.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "index": "iterate-cursor-tutorial", 5 "text": { 6 "query": "summer", 7 "path": "title" 8 } 9 } 10 }, 11 { 12 "$project": { 13 "_id": 0, 14 "title": 1 15 } 16 } 17 ]).forEach(printjson)
1 { 2 title: 'Summer' 3 } 4 { 5 title: 'Summer Stock' 6 } 7 { 8 title: 'Violent Summer' 9 } 10 { 11 title: 'Indian Summer' 12 } 13 { 14 title: 'Indian Summer' 15 } 16 { 17 title: 'Summer Rental' 18 } 19 { 20 title: 'Summer Things' 21 } 22 { 23 title: 'Wolf Summer' 24 } 25 { 26 title: 'Summer Storm' 27 } 28 { 29 title: 'Summer Palace' 30 } 31 { 32 title: 'Eternal Summer' 33 } 34 { 35 title: 'Summer Holiday' 36 } 37 { 38 title: 'Summer Wars' 39 } 40 { 41 title: 'Summer Games' 42 } 43 { 44 title: 'Summer Nights' 45 } 46 { 47 title: 'A Summer Place' 48 } 49 { 50 title: 'Summer and Smoke' 51 } 52 { 53 title: 'The Endless Summer' 54 } 55 { 56 title: "Summer of '42" 57 } 58 { 59 title: 'That Certain Summer' 60 } 61 { 62 title: 'One Deadly Summer' 63 } 64 { 65 title: 'Summer Camp Nightmare' 66 } 67 { 68 title: 'An Unforgettable Summer' 69 } 70 { 71 title: 'Summer of Sam' 72 } 73 { 74 title: 'Bullets Over Summer' 75 } 76 { 77 title: 'Summer in Berlin' 78 } 79 { 80 title: 'A Plumm Summer' 81 } 82 { 83 title: 'Summer Heights High' 84 } 85 { 86 title: 'Summer of Goliath' 87 } 88 { 89 title: 'Red Hook Summer' 90 } 91 { 92 title: 'Ping Pong Summer' 93 } 94 { 95 title: 'Summer of Blood' 96 } 97 { 98 title: 'The End of Summer' 99 } 100 { 101 title: 'Summer Wishes, Winter Dreams' 102 } 103 { 104 title: "A Summer at Grandpa's" 105 } 106 { 107 title: 'Cold Summer of 1953' 108 } 109 { 110 title: 'A Brighter Summer Day' 111 } 112 { 113 title: 'Summer of the Monkeys' 114 } 115 { 116 title: 'A Storm in Summer' 117 } 118 { 119 title: 'Wet Hot American Summer' 120 } 121 { 122 title: 'My Summer of Love' 123 } 124 { 125 title: 'Nasu: Summer in Andalusia' 126 } 127 { 128 title: 'A Summer in Genoa' 129 } 130 { 131 title: '(500) Days of Summer' 132 } 133 { 134 title: 'Summer Days with Coo' 135 } 136 { 137 title: 'The Kings of Summer' 138 } 139 { 140 title: 'May in the Summer' 141 } 142 { 143 title: 'A Horse for Summer' 144 } 145 { 146 title: 'The Summer of Sangaile' 147 } 148 { 149 title: 'Smiles of a Summer Night' 150 } 151 { 152 title: 'Shadows of a Hot Summer' 153 } 154 { 155 title: 'That Summer of White Roses' 156 } 157 { 158 title: 'Last Summer in the Hamptons' 159 } 160 { 161 title: 'A Summer in La Goulette' 162 } 163 { 164 title: 'A Summer by the River' 165 } 166 { 167 title: 'Summer in the Golden Valley' 168 } 169 { 170 title: 'How I Ended This Summer' 171 } 172 { 173 title: 'And They Call It Summer' 174 } 175 { 176 title: 'Spring, Summer, Fall, Winter... and Spring' 177 } 178 { 179 title: 'The Last Summer of La Boyita' 180 } 181 { 182 title: 'The Mafia Only Kills in Summer' 183 } 184 { 185 title: 'I Know What You Did Last Summer' 186 } 187 { 188 title: 'I Know What You Did Last Summer' 189 } 190 { 191 title: 'Judy Moody and the Not Bummer Summer' 192 } 193 { 194 title: 'I Still Know What You Did Last Summer' 195 }
Observação
Por padrão, o MongoDB Compass exibe os primeiros 10 resultados.
Conecte-se ao seu cluster no MongoDB Compass.
Abra o MongoDB Compass e conecte-se ao cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via Compass.
Utilize a movies
coleção no sample_mflix
banco de dados.<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
Na tela Databases, clique no banco de dados sample_mflix
e, em seguida, clique na coleção movies
.
Execute a seguinte query do movies
Atlas Search na coleção.
A seguinte query utiliza o estágio de pipeline $search
para fazer query na collection.
Para executar esta consulta no MongoDB Compass:
Clique na aba Aggregations.
Clique em Select... e, em seguida, configure cada um dos seguintes estágios do pipeline, selecionando o estágio no menu suspenso e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.
estágio do pipelineQuery$search
{ "index": "iterate-cursor-tutorial", "text": { "query": "Summer", "path": "title" } } $project
{ "id": 0, "title": 1 } No canto superior direito, clique em Export.
Selecione JSON para o Export File Type.
Clique em Export....
Abra o arquivo JSON para visualizar todos os documentos nos resultados:
1 [{ 2 "title": "Summer" 3 }, 4 { 5 "title": "Summer Stock" 6 }, 7 { 8 "title": "Violent Summer" 9 }, 10 { 11 "title": "Indian Summer" 12 }, 13 { 14 "title": "Indian Summer" 15 }, 16 { 17 "title": "Summer Rental" 18 }, 19 { 20 "title": "Summer Things" 21 }, 22 { 23 "title": "Wolf Summer" 24 }, 25 { 26 "title": "Summer Storm" 27 }, 28 { 29 "title": "Summer Palace" 30 }, 31 { 32 "title": "Eternal Summer" 33 }, 34 { 35 "title": "Summer Holiday" 36 }, 37 { 38 "title": "Summer Wars" 39 }, 40 { 41 "title": "Summer Games" 42 }, 43 { 44 "title": "Summer Nights" 45 }, 46 { 47 "title": "A Summer Place" 48 }, 49 { 50 "title": "Summer and Smoke" 51 }, 52 { 53 "title": "The Endless Summer" 54 }, 55 { 56 "title": "Summer of '42" 57 }, 58 { 59 "title": "That Certain Summer" 60 }, 61 { 62 "title": "One Deadly Summer" 63 }, 64 { 65 "title": "Summer Camp Nightmare" 66 }, 67 { 68 "title": "An Unforgettable Summer" 69 }, 70 { 71 "title": "Summer of Sam" 72 }, 73 { 74 "title": "Bullets Over Summer" 75 }, 76 { 77 "title": "Summer in Berlin" 78 }, 79 { 80 "title": "A Plumm Summer" 81 }, 82 { 83 "title": "Summer Heights High" 84 }, 85 { 86 "title": "Summer of Goliath" 87 }, 88 { 89 "title": "Red Hook Summer" 90 }, 91 { 92 "title": "Ping Pong Summer" 93 }, 94 { 95 "title": "Summer of Blood" 96 }, 97 { 98 "title": "The End of Summer" 99 }, 100 { 101 "title": "Summer Wishes, Winter Dreams" 102 }, 103 { 104 "title": "A Summer at Grandpa's" 105 }, 106 { 107 "title": "Cold Summer of 1953" 108 }, 109 { 110 "title": "A Brighter Summer Day" 111 }, 112 { 113 "title": "Summer of the Monkeys" 114 }, 115 { 116 "title": "A Storm in Summer" 117 }, 118 { 119 "title": "Wet Hot American Summer" 120 }, 121 { 122 "title": "My Summer of Love" 123 }, 124 { 125 "title": "Nasu: Summer in Andalusia" 126 }, 127 { 128 "title": "A Summer in Genoa" 129 }, 130 { 131 "title": "(500) Days of Summer" 132 }, 133 { 134 "title": "Summer Days with Coo" 135 }, 136 { 137 "title": "The Kings of Summer" 138 }, 139 { 140 "title": "May in the Summer" 141 }, 142 { 143 "title": "A Horse for Summer" 144 }, 145 { 146 "title": "The Summer of Sangaile" 147 }, 148 { 149 "title": "Smiles of a Summer Night" 150 }, 151 { 152 "title": "Shadows of a Hot Summer" 153 }, 154 { 155 "title": "That Summer of White Roses" 156 }, 157 { 158 "title": "Last Summer in the Hamptons" 159 }, 160 { 161 "title": "A Summer in La Goulette" 162 }, 163 { 164 "title": "A Summer by the River" 165 }, 166 { 167 "title": "Summer in the Golden Valley" 168 }, 169 { 170 "title": "How I Ended This Summer" 171 }, 172 { 173 "title": "And They Call It Summer" 174 }, 175 { 176 "title": "Spring, Summer, Fall, Winter... and Spring" 177 }, 178 { 179 "title": "The Last Summer of La Boyita" 180 }, 181 { 182 "title": "The Mafia Only Kills in Summer" 183 }, 184 { 185 "title": "I Know What You Did Last Summer" 186 }, 187 { 188 "title": "I Know What You Did Last Summer" 189 }, 190 { 191 "title": "Judy Moody and the Not Bummer Summer" 192 }, 193 { 194 "title": "I Still Know What You Did Last Summer" 195 }]