Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Acessar dados de um cursor

Neste guia, você pode aprender como acessar dados de um cursor usando o driver Ruby.

Um cursor é um mecanismo que retorna os resultados de uma operação de leitura em lotes iteráveis. Como um cursor contém apenas um subconjunto de documentos a qualquer momento, os cursores reduzem o consumo de memória e o número de solicitações que o driver envia ao servidor.

Você não pode acessar a classe Mongo::Cursor diretamente do código do seu aplicação . Quando você usa o driver Ruby para executar uma operação de leitura, o driver retorna um objeto Mongo::Collection::View que representa a query. Depois de solicitar os resultados da query do objeto Collection::View , o driver armazena internamente esses resultados em um objeto Cursor . Em seguida, o Collection::View expõe a interface Enumerable, apoiada pela classe Cursor , da qual você pode acessar os resultados.

The examples in this guide use the restaurants collection in the sample_restaurants database from the Atlas sample datasets. To access this collection from your Ruby application, create a Mongo::Client object that connects to an Atlas cluster and assign the following values to your database and collection variables:

database = client.use('sample_restaurants')
collection = database[:restaurants]

Para aprender a criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o Guia de Introdução do MongoDB.

Para iterar sobre o conteúdo de um cursor, chame o método each no objeto Mongo::Collection::View retornado pela operação de leitura. Isso instrui o driver a executar a operação e retornar cada resultado armazenado no Mongo::Cursor.

O exemplo a seguir usa o método find para recuperar todos os documentos nos quais o valor do campo name é "Dunkin' Donuts". Em seguida, ele imprime cada documento armazenado no cursor:

cursor = collection.find(name: "Dunkin' Donuts")
cursor.each do |doc|
puts doc
end

Para recuperar documentos de um cursor individualmente, chame o método first no objeto Mongo::Collection::View retornado pela operação de leitura.

O exemplo a seguir encontra todos os documentos em uma collection que têm um valor de name de "Dunkin' Donuts". Em seguida, ele imprime o primeiro documento no cursor chamando o método first.

cursor = collection.find(name: "Dunkin' Donuts")
first_doc = cursor.first
puts first_doc

Aviso

If the number and size of documents returned by your query exceeds available application memory, your program will crash. If you expect a large result set, access your cursor iteratively.

Para recuperar todos os documentos de um cursor, converta o cursor em uma array usando o método to_a em seu objeto Mongo::Collection::View correspondente.

O exemplo a seguir chama o método to_a para armazenar os resultados do cursor em uma array:

cursor = collection.find(name: "Dunkin' Donuts")
array_results = cursor.to_a

When querying on a capped collection, you can use a tailable cursor that remains open after the client exhausts the results in a cursor. To create a tailable cursor, pass the cursor_type option to the find method. Set this option to :tailable.

Por exemplo, você pode criar uma collection limitada chamada vegetables, conforme mostrado no código a seguir:

db = client.use('db')
collection = db[:vegetables, capped: true, size: 1024 * 1024]
collection.create
vegetables = [
{ name: 'cauliflower' },
{ name: 'zucchini' }
]
collection.insert_many(vegetables)

Em seguida, você pode usar o seguinte código para recuperar todos os documentos na coleção vegetables e armazenar os resultados em um cursor persistente. Depois que o cursor estiver esgotado, ele permanecerá aberto até a recuperação de três documentos:

cursor = collection.find({}, cursor_type: :tailable)
docs_found = 0
cursor.each do |doc|
puts doc
docs_found += 1
break if docs_found >= 3
end

Se você inserir outro documento na coleção vegetables, o código anterior imprimirá o novo documento e não recuperará mais resultados do cursor.

To learn more about tailable cursors, see Tailable Cursors in the MongoDB Server manual.

Para saber mais sobre qualquer uma das funções discutidas nesta guia, consulte a seguinte documentação da API: