이 튜토리얼에서는 커서에 있는 문서에 액세스 방법을 보여줍니다.
이 작업에 관한 정보
커서를 수동으로 반복하거나 toArray() 메서드를 사용하여 커서의 문서에 액세스할 수 있습니다.
이 튜토리얼에서는 다음 내용을 간략하게 설명합니다.
let키워드를 사용하여 커서를 변수로 저장합니다.toArray()메서드를 사용하여 커서 문서를 배열로 반환하고 액세스.
배치 크기
커서는 문서를 배치로 반환합니다. 기본적으로 mongosh는 커서 반복당 20 개의 문서를 표시합니다. 필요에 따라 너무 많거나 적으면 config.set("displayBatchSize") 를 사용하여 변경할 수 있습니다.
시작하기 전에
새 컬렉션에 문서 삽입
기본값 test 데이터베이스 사용하여 새 컬렉션에 문서를 삽입하려면 mongosh 를 사용합니다.
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" } ] )
예시
다음으로 커서 저장: let
mongosh에서 커서는 let 키워드를 사용하여 변수에 할당할 때 자동으로 반복되지 않습니다.
let myCursor = db.users.find( { type: "user" } )
쉘에서 커서 변수를 호출하여 일치하는 문서를 인쇄할 수 있습니다.
myCursor
반환된 커서가 let 키워드를 사용하여 변수에 할당되지 않으면 커서는 자동으로 배치 크기까지 반복되어 첫 번째 배치의 결과를 출력합니다.
db.users.find( { type: "user" } )
다음을 사용하여 커서로 문서에 액세스 next()
커서 메서드 next() 를 사용하여 문서에 액세스 수도 있습니다. next() 는 커서 현재 가리키고 있는 문서 반환한 다음 커서 다음 문서 앞으로 이동합니다.
let myCursor = db.users.find( { type: "user" } ) myCursor.next()
다음을 사용하여 커서로 문서에 액세스 hasNext()
커서 메서드 hasNext()는 커서에서 반환할 문서가 더 있는지 여부를 나타내기 위해 true 또는 false를 반환합니다.
let myCursor = db.users.find( { type: "user" } ) myCursor.hasNext()
printjson() 헬퍼를 사용하여 커서에서 남아 있는 모든 문서를 출력하려면 hasNext() 및 next() 메서드를 사용할 수 있습니다.
let myCursor = db.users.find( { type: "user" } ) while ( myCursor.hasNext() ) { printjson( myCursor.next() ) }
다음을 사용하여 커서로 문서에 액세스 forEach()
마찬가지로, 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 커서 메서드 및 드라이버 설명서에서 확인 가능합니다.
다음을 사용하여 커서로 문서에 액세스 toArray()
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]