이 튜토리얼에서는 커서 에 있는 문서에 액세스 방법을 보여줍니다.
커서 에 있는 문서에 액세스 하려면 커서 수동으로 반복하거나 메서드를 toArray()
사용할 수 있습니다.
이 튜토리얼에서는 다음을 수행하는 방법을 간략하게 설명합니다.
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 번 반복하고 일치하는 문서를 인쇄할 수 있습니다.
반환된 커서 키워드를 사용하여 변수에 할당되지 않은 경우 커서 let
배치 크기 자동으로 반복되어 첫 번째 결과 배치 를 인쇄합니다.
db.users.find( { type: "user" } ) |
커서 메서드 를 사용하여 next()
문서에 액세스 수도 있습니다. next()
는 커서 현재 가리키고 있는 문서 반환한 다음 커서 다음 문서 앞으로 이동합니다.
let myCursor = db.users.find( { type: "user" } ) |
|
myCursor.next() |
커서 메서드 hasNext()
는 true
또는 를 false
반환하여 커서 에서 반환할 문서가 더 있는지 여부를 나타냅니다.
let myCursor = db.users.find( { type: "user" } ) |
|
myCursor.hasNext() |
hasNext()
next()
및 printjson()
메서드를 사용하면 헬퍼를 사용하여 커서 에 있는 나머지 문서를 모두 인쇄할 수 있습니다.
let myCursor = db.users.find( { type: "user" } ) |
|
while ( myCursor.hasNext() ) { |
printjson( myCursor.next() ) |
} |
마찬가지로 커서 forEach()
메서드 를 사용하여 printjson()
커서 의 각 문서 에 와 같은 헬퍼를 적용 수 있습니다.
let myCursor = db.users.find( { type: "user" } ) |
|
myCursor.forEach( myDocument => printjson(myDocument) ) |
부터 mongosh
2.1.0 시작하여 for-of
루프를 사용하여 커서 반복할 수도 있습니다. 다음 예시 에서는 이전 예시 와 동일한 결과를 반환합니다.
let myCursor = db.users.find( { type: "user" } ) |
|
for ( let myDocument of myCursor ) { |
printjson( myDocument ) |
} |
커서 메서드에 대한 자세한 내용은 JavaScript 커서 메서드 및 드라이버 설명서에서 확인 가능합니다.
mongosh
toArray()
에서 메서드를 사용하여 커서 반복하고 문서를 배열 로 반환합니다.
let myCursor = db.users.find( { type: "user" } ) |
|
let documentArray = myCursor.toArray() |
|
documentArray |
결과 문서 배열 기존 배열 로 액세스 할 수 있습니다.
let myCursor = db.users.find( { type: "user" } ) |
|
let documentArray = myCursor.toArray() |
|
documentArray[1] |
toArray()
메서드는 커서 반환한 모든 문서를 RAM 에 로드하고 커서 소진합니다.
일부 드라이버는 커서 의 인덱스 사용하여 문서에 대한 액세스cursor[index]
제공합니다(예:). 이는 메서드를 먼저 호출한 toArray()
다음 결과 배열 의 인덱스 사용하기 위한 지름길입니다.
let myCursor = db.users.find( { type: "user" } ) |
|
myCursor.toArray() [1] |