Este tutorial demonstra como acessar documentos em um cursor.
Para acessar documentos em um cursor, você pode iterar manualmente o cursor ou usar o toArray()
método.
Este tutorial descreve como:
Salve um cursor como uma variável usando a palavra-chave let
.
Use os métodos next()
hasNext()
, e para acessar documentos em um cursor.forEach()
Retorne e acesse os documentos do cursor como uma array com o toArray()
método.
Use para inserir documentos em uma nova collection usando mongosh
o test
banco de dados padrão :
db.users.insertMany( [ |
{ _id: 0, type: "admin", email: "admin@example.com", name: "Admin User" }, |
{ _id: 1, type: "user", email: "user1@example.com", name: "Test User 1" }, |
{ _id: 2, type: "user", email: "user2@example.com", name: "Test User 2" } |
] ) |
Em , o cursor não itera automaticamente quando você o atribui a uma variável usando mongosh
a let
palavra-chave.
let myCursor = db.users.find( { type: "user" } ) |
Você pode chamar a variável do cursor no shell para iterar até 20 vezes e imprimir os documentos correspondentes.
[ |
{ |
_id: 1, |
type: 'user', |
email: 'user1@example.com', |
name: 'Test User 1' |
}, |
{ |
_id: 2, |
type: 'user', |
email: 'user2@example.com', |
name: 'Test User 2' |
} |
] |
Se o cursor retornado não for atribuído a uma variável usando a let
palavra-chave, o cursor será automaticamente iterado até o tamanho do lote , imprimindo o primeiro lote de resultados.
db.users.find( { type: "user" } ) |
[ |
{ |
_id: 1, |
type: 'user', |
email: 'user1@example.com', |
name: 'Test User 1' |
}, |
{ |
_id: 2, |
type: 'user', |
email: 'user2@example.com', |
name: 'Test User 2' |
} |
] |
Você também pode usar o método do cursor para next()
next()
acessar os documentos. retorna o documento que o cursor aponta atualmente e, em seguida, move o cursor para a frente para o próximo documento.
let myCursor = db.users.find( { type: "user" } ) |
|
myCursor.next() |
{ |
_id: 1, |
type: 'user', |
email: 'user1@example.com', |
name: 'Test User 1' |
} |
O método do cursor hasNext()
retorna true
ou false
para indicar se há mais documentos a serem retornados do cursor.
let myCursor = db.users.find( { type: "user" } ) |
|
myCursor.hasNext() |
Você pode usar os hasNext()
métodos e para imprimir todos os documentos restantes do cursor usando o next()
printjson()
assistente.
let myCursor = db.users.find( { type: "user" } ) |
|
while ( myCursor.hasNext() ) { |
printjson( myCursor.next() ) |
} |
{ |
_id: 1, |
type: 'user', |
email: 'user1@example.com', |
name: 'Test User 1' |
} |
{ |
_id: 2, |
type: 'user', |
email: 'user2@example.com', |
name: 'Test User 2' |
} |
Da mesma forma, você pode usar o método do cursor para aplicar um forEach()
assistente,printjson()
como, a cada documento no cursor.
let myCursor = db.users.find( { type: "user" } ) |
|
myCursor.forEach( myDocument => printjson(myDocument) ) |
{ |
_id: 1, |
type: 'user', |
email: 'user1@example.com', |
name: 'Test User 1' |
} |
{ |
_id: 2, |
type: 'user', |
email: 'user2@example.com', |
name: 'Test User 2' |
} |
Começando mongosh
2.1.0 em, você também pode usar for-of
loops para iterar o cursor. O exemplo a seguir retorna os mesmos resultados do exemplo anterior .
let myCursor = db.users.find( { type: "user" } ) |
|
for ( let myDocument of myCursor ) { |
printjson( myDocument ) |
} |
{ |
_id: 1, |
type: 'user', |
email: 'user1@example.com', |
name: 'Test User 1' |
} |
{ |
_id: 2, |
type: 'user', |
email: 'user2@example.com', |
name: 'Test User 2' |
} |
Consulte os métodos de cursor JavaScript e a documentação do driver para obter mais informações sobre os métodos de cursor.
mongosh
Em, use o método para iterar o cursor e retornar os documentos em uma toArray()
array.
let myCursor = db.users.find( { type: "user" } ) |
|
let documentArray = myCursor.toArray() |
|
documentArray |
[ |
{ |
_id: 1, |
type: 'user', |
email: 'user1@example.com', |
name: 'Test User 1' |
}, |
{ |
_id: 2, |
type: 'user', |
email: 'user2@example.com', |
name: 'Test User 2' |
} |
] |
Você pode acessar a array de documento resultante como uma array tradicional.
let myCursor = db.users.find( { type: "user" } ) |
|
let documentArray = myCursor.toArray() |
|
documentArray[1] |
{ |
_id: 2, |
type: 'user', |
email: 'user2@example.com', |
name: 'Test User 2' |
} |
O método carrega todos os documentos retornados pelo cursor na RAM e esgota o toArray()
cursor.
Alguns drivers fornecem acesso aos documentos usando um índice no cursor (oucursor[index]
seja,). Ese é um atalho para chamar primeiro o método e depois usar um índice no array toArray()
resultante.
let myCursor = db.users.find( { type: "user" } ) |
|
myCursor.toArray() [1] |
{ |
_id: 2, |
type: 'user', |
email: 'user2@example.com', |
name: 'Test User 2' |
} |