Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ / /

에서 커서 반복 mongosh

이 튜토리얼에서는 커서 에 있는 문서에 액세스 방법을 보여줍니다.

커서 에 있는 문서에 액세스 하려면 커서 수동으로 반복하거나 메서드를 toArray() 사용할 수 있습니다.

이 튜토리얼에서는 다음을 수행하는 방법을 간략하게 설명합니다.

  • let 키워드를 사용하여 커서 변수로 저장합니다.

  • , 및 메서드를 next() hasNext() forEach() 사용하여 커서 에 있는 문서에 액세스 .

  • 메서드를 사용하여 커서 문서를 배열 로 toArray() 반환하고 액세스 .

  • mongosh 설치합니다.

  • 배포서버 에 연결합니다.

mongosh 기본값 test 데이터베이스 사용하여 새 컬렉션 에 문서를 삽입하려면 를 사용합니다.

db.users.insertMany( [
{ _id: 0, type: "admin", email: "[email protected]", name: "Admin User" },
{ _id: 1, type: "user", email: "[email protected]", name: "Test User 1" },
{ _id: 2, type: "user", email: "[email protected]", name: "Test User 2" }
] )

mongosh에서는 let 키워드를 사용하여 커서를 변수에 할당할 때 커서 자동으로 반복되지 않습니다.

let myCursor = db.users.find( { type: "user" } )

셸 에서 커서 변수를 호출하여 최대 20 번 [] 번1 반복하고 일치하는 문서를 인쇄할 수 있습니다.

myCursor
[
{
_id: 1,
type: 'user',
email: '[email protected]',
name: 'Test User 1'
},
{
_id: 2,
type: 'user',
email: '[email protected]',
name: 'Test User 2'
}
]

반환된 커서 키워드를 사용하여 변수에 할당되지 않은 경우 커서 let 배치 크기 [] 까지1 자동으로 반복되어 첫 번째 결과 배치 를 인쇄합니다.

db.users.find( { type: "user" } )
[
{
_id: 1,
type: 'user',
email: '[email protected]',
name: 'Test User 1'
},
{
_id: 2,
type: 'user',
email: '[email protected]',
name: 'Test User 2'
}
]

커서 메서드 를 사용하여 next() 문서에 액세스 수도 있습니다. next() 는 커서 현재 가리키고 있는 문서 반환한 다음 커서 다음 문서 앞으로 이동합니다.

let myCursor = db.users.find( { type: "user" } )
myCursor.next()
{
_id: 1,
type: 'user',
email: '[email protected]',
name: 'Test User 1'
}

커서 메서드 hasNext()true 또는 를 false 반환하여 커서 에서 반환할 문서가 더 있는지 여부를 나타냅니다.

let myCursor = db.users.find( { type: "user" } )
myCursor.hasNext()
true

hasNext() next()printjson() 메서드를 사용하면 헬퍼를 사용하여 커서 에 있는 나머지 문서를 모두 인쇄할 수 있습니다.

let myCursor = db.users.find( { type: "user" } )
while ( myCursor.hasNext() ) {
printjson( myCursor.next() )
}
{
_id: 1,
type: 'user',
email: '[email protected]',
name: 'Test User 1'
}
{
_id: 2,
type: 'user',
email: '[email protected]',
name: 'Test User 2'
}

마찬가지로 커서 forEach() 메서드 를 사용하여 printjson() 커서 의 각 문서 에 와 같은 헬퍼를 적용 수 있습니다.

let myCursor = db.users.find( { type: "user" } )
myCursor.forEach( myDocument => printjson(myDocument) )
{
_id: 1,
type: 'user',
email: '[email protected]',
name: 'Test User 1'
}
{
_id: 2,
type: 'user',
email: '[email protected]',
name: 'Test User 2'
}

부터 mongosh 2.1.0 시작하여 for-of 루프를 사용하여 커서 반복할 수도 있습니다. 다음 예시 에서는 이전 예시 와 동일한 결과를 반환합니다.

let myCursor = db.users.find( { type: "user" } )
for ( let myDocument of myCursor ) {
printjson( myDocument )
}
{
_id: 1,
type: 'user',
email: '[email protected]',
name: 'Test User 1'
}
{
_id: 2,
type: 'user',
email: '[email protected]',
name: 'Test User 2'
}

커서 메서드에 대한 자세한 내용은 JavaScript 커서 메서드드라이버 설명서에서 확인 가능합니다.

mongosh toArray() 에서 메서드를 사용하여 커서 반복하고 문서를 배열 로 반환합니다.

let myCursor = db.users.find( { type: "user" } )
let documentArray = myCursor.toArray()
documentArray
[
{
_id: 1,
type: 'user',
email: '[email protected]',
name: 'Test User 1'
},
{
_id: 2,
type: 'user',
email: '[email protected]',
name: 'Test User 2'
}
]

결과 문서 배열 기존 배열 로 액세스 할 수 있습니다.

let myCursor = db.users.find( { type: "user" } )
let documentArray = myCursor.toArray()
documentArray[1]
{
_id: 2,
type: 'user',
email: '[email protected]',
name: 'Test User 2'
}

toArray() 메서드는 커서 반환한 모든 문서를 RAM 에 로드하고 커서 소진합니다.

일부 드라이버는 커서 의 인덱스 사용하여 문서에 대한 액세스cursor[index] 제공합니다(예:). 이는 메서드를 먼저 호출한 toArray() 다음 결과 배열 의 인덱스 사용하기 위한 지름길입니다.

let myCursor = db.users.find( { type: "user" } )
myCursor.toArray() [1]
{
_id: 2,
type: 'user',
email: '[email protected]',
name: 'Test User 2'
}
[1](1, 2) DBQuery.shellBatchSize 속성을 설정하여 문서 수 기본값 20을 변경할 수 있습니다.

돌아가기

Cursors

이 페이지의 내용