이 튜토리얼에서는 커서에 있는 문서에 액세스 방법을 보여줍니다.
이 작업에 관한 정보
커서를 수동으로 반복하거나 toArray() 메서드를 사용하여 커서의 문서에 액세스할 수 있습니다.
이 튜토리얼에서는 다음 내용을 간략하게 설명합니다.
let키워드를 사용하여 커서를 변수로 저장합니다.toArray()메서드를 사용하여 커서 문서를 배열로 반환하고 액세스.
배치 크기
커서 문서를 배치로 반환합니다. 기본값 으로 mongosh 커서 20 커서 당 개의 문서를 표시합니다.config를 사용할 수 있습니다. 필요에 비해 너무 많거나 적은 경우 ('displayBatchSize')를 설정하다 변경할 수 있습니다.
시작하기 전에
새 컬렉션에 문서 삽입
mongosh 기본값 test 데이터베이스 사용하여 새 컬렉션 에 문서를 삽입하려면 를 사용합니다.
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
[ { _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 키워드를 사용하여 변수에 할당되지 않으면 커서는 자동으로 배치 크기까지 반복되어 첫 번째 배치의 결과를 출력합니다.
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' } ]
다음을 사용하여 커서로 문서에 액세스 next()
커서 메서드 next() 를 사용하여 문서에 액세스 수도 있습니다. next() 는 커서 현재 가리키고 있는 문서 반환한 다음 커서 다음 문서 앞으로 이동합니다.
let myCursor = db.users.find( { type: "user" } ) myCursor.next()
{ _id: 1, type: 'user', email: 'user1@example.com', name: 'Test User 1' }
다음을 사용하여 커서로 문서에 액세스 hasNext()
커서 메서드 hasNext()는 커서에서 반환할 문서가 더 있는지 여부를 나타내기 위해 true 또는 false를 반환합니다.
let myCursor = db.users.find( { type: "user" } ) myCursor.hasNext()
true
printjson() 헬퍼를 사용하여 커서에서 남아 있는 모든 문서를 출력하려면 hasNext() 및 next() 메서드를 사용할 수 있습니다.
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' }
다음을 사용하여 커서로 문서에 액세스 forEach()
마찬가지로, forEach() 커서 메서드를 사용하여 커서의 각 문서에 printjson()과 같은 헬퍼를 적용할 수 있습니다.
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' }
.. 부터 시작하여 mongosh 21 0 for-of 루프를 사용하여 커서 반복할 수도 있습니다. 다음 예시 이전 예시 와 동일한 결과를 반환합니다.
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' }
커서 메서드에 대한 자세한 내용은 JavaScript 커서 메서드 및 드라이버 설명서에서 확인 가능합니다.
다음을 사용하여 커서로 문서에 액세스 toArray()
mongosh toArray()에서 메서드를 사용하여 커서 반복하고 문서를 배열 로 반환합니다.
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' } ]
결과 문서 배열에 전통적인 배열처럼 액세스할 수 있습니다.
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' }
toArray() 메서드는 커서가 반환한 모든 문서를 RAM에 불러오고 커서를 소진합니다.
일부 드라이버는 커서 의 인덱스 사용하여 문서에 대한 액세스cursor[index] 제공합니다(예:). 이는 메서드를 먼저 호출한 toArray() 다음 결과 배열 의 인덱스 사용하기 위한 지름길입니다.
let myCursor = db.users.find( { type: "user" } ) myCursor.toArray() [1]
{ _id: 2, type: 'user', email: 'user2@example.com', name: 'Test User 2' }