Docs Menu
Docs Home
/ /
Cursors

cursor.max()

cursor.max()

μ€‘μš”

Mongo쉬 방법

μ΄λŠ” mongosh λ©”μ„œλ“œμž…λ‹ˆλ‹€. μ΄λŠ” Node.js λ˜λŠ” 기타 ν”„λ‘œκ·Έλž˜λ° 언어별 λ“œλΌμ΄λ²„ λ©”μ„œλ“œμ— λŒ€ν•œ μ„€λͺ…μ„œκ°€ μ•„λ‹™λ‹ˆλ‹€ .

λŒ€λΆ€λΆ„μ˜ 경우 mongosh λ©”μ„œλ“œλŠ” λ ˆκ±°μ‹œ mongo shell λ©”μ„œλ“œμ™€ λ™μΌν•œ λ°©μ‹μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 일뢀 λ ˆκ±°μ‹œ λ©”μ„œλ“œλŠ” mongosh μ—μ„œ μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

λ ˆκ±°μ‹œ mongo μ…Έ λ¬Έμ„œλŠ” ν•΄λ‹Ή MongoDB μ„œλ²„ 릴리슀 λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

MongoDB API λ“œλΌμ΄λ²„μ˜ 경우 언어별 MongoDB λ“œλΌμ΄λ²„ λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

find()의 κ²°κ³Όλ₯Ό μ œν•œν•˜κΈ° μœ„ν•΄ νŠΉμ • μΈλ±μŠ€μ— λŒ€ν•œ 배타적 μƒν•œμ„ μ§€μ •ν•©λ‹ˆλ‹€. max()λŠ” 볡합 ν‚€ 인덱슀의 μƒν•œμ„ μ§€μ •ν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.

max() λ©”μ„œλ“œμ—λŠ” λ‹€μŒκ³Ό 같은 λ§€κ°œλ³€μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

Parameter
μœ ν˜•
μ„€λͺ…

indexBounds

λ¬Έμ„œ

인덱슀 ν‚€μ˜ 배타적 μƒν•œμž…λ‹ˆλ‹€.

indexBounds λ§€κ°œλ³€μˆ˜μ˜ ν”„λ‘œν† νƒ€μž… ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

{ field1: <max value>, field2: <max value2> ... fieldN:<max valueN> }

ν•„λ“œλŠ” νŠΉμ • 인덱슀의 λͺ¨λ“  킀에 μˆœμ„œλŒ€λ‘œ ν•΄λ‹Ήλ©λ‹ˆλ‹€.

μ°Έκ³ 

인덱슀 μ‚¬μš©ν•˜κΈ°

λ©”μ„œλ“œμ™€ ν•¨κ»˜ 인덱슀λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 쿼리가 ν•„λ“œμ˜ 동등 max() find() 쑰건인 경우λ₯Ό μ œμ™Έν•˜κ³  hint() _id λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©ν•˜λ €λŠ” 인덱슀λ₯Ό μ§€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

팁

max() λŠ” 주둜 mongos shell ( 샀딩) ν”„λ‘œμ„ΈμŠ€ λ₯Ό 지원 ν•˜κΈ° μœ„ν•΄ μ‘΄μž¬ν•˜λ©° 쿼리 μˆ˜μ •μž $maxλ₯Ό κ°μ‹ΈλŠ” λž˜νΌμž…λ‹ˆλ‹€.

μ°Έκ³ 

v3.2λΆ€ν„° 지원이 μ€‘λ‹¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€

v3.2 λΆ€ν„° $max μ—°μ‚°μž λŠ” mongosh μ—μ„œ 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. mongosh μ—μ„œλŠ” cursor.max() 을 λŒ€μ‹  μ‚¬μš©ν•©λ‹ˆλ‹€.

이 λ©”μ„œλ“œλŠ” λ‹€μŒ ν™˜κ²½μ—μ„œ ν˜ΈμŠ€νŒ…λ˜λŠ” λ°°ν¬μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • MongoDB Atlas: ν΄λΌμš°λ“œμ—μ„œμ˜ MongoDB 배포λ₯Ό μœ„ν•œ μ™„μ „ κ΄€λ¦¬ν˜• μ„œλΉ„μŠ€

μ°Έκ³ 

이 λͺ…령은 λͺ¨λ“  MongoDB Atlas ν΄λŸ¬μŠ€ν„°μ—μ„œ μ§€μ›λ©λ‹ˆλ‹€. λͺ¨λ“  λͺ…령에 λŒ€ν•œ Atlas 지원에 κ΄€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄λ €λ©΄ μ§€μ›λ˜μ§€ μ•ŠλŠ” λͺ…령을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

  • MongoDB Enterprise: MongoDB의 ꡬ독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 μ†ŒμŠ€ μ‚¬μš© κ°€λŠ₯ 무료 자체 관리 버전

max()λŠ” ν•„λ“œμ— μΈλ±μŠ€κ°€ ν•„μš”ν•˜κ³  쿼리가 이 인덱슀λ₯Ό μ‚¬μš©ν•˜λ„λ‘ κ°•μš”ν•˜κΈ° λ•Œλ¬Έμ— κ°€λŠ₯ν•˜λ©΄ 쿼리에 $lt μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. λ‹€μŒ μ˜ˆμ‹œλ₯Ό ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

db.products.find( { _id: { $in: [ 6, 7 ] } } ).max( { price: NumberDecimal("1.39") } ).hint( { price: 1 } )

이 μΏΌλ¦¬λŠ” _id 의 μΈλ±μŠ€κ°€ 더 λ‚˜μ„ 수 μžˆλ”λΌλ„ price ν•„λ“œμ˜ 인덱슀λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

max() 을 min() 와 ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬ λ²”μœ„ λ₯Ό μ§€μ •ν•˜λŠ” 경우:

$min 및 $max μ—°μ‚°μžλŠ” μ‹œμŠ€ν…œμ΄ 일반적인 쿼리 κ³„νšμ„ ν”Όν•΄μ•Ό 함을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. λŒ€μ‹  $min 및 $max 에 μ§€μ •λœ κ°’μœΌλ‘œ 인덱슀 경계가 λͺ…μ‹œμ μœΌλ‘œ μ§€μ •λ˜λŠ” 인덱슀 μŠ€μΊ”μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€.

κ²½κ³ 

두 경계 쀑 ν•˜λ‚˜λ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 쿼리 κ³„νšμ€ ν•œ μͺ½μ΄ μ œν•œλ˜μ§€ μ•Šμ€ 인덱슀 μŠ€μΊ”μ΄ λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ—°μ‚°μžλ₯Ό λͺ¨λ‘ ν¬ν•¨ν•˜μ§€ μ•ŠλŠ” 쿼리 λ˜λŠ” 두 μ—°μ‚°μžλ₯Ό λͺ¨λ‘ μ‚¬μš©ν•˜μ—¬ 인덱슀 μŠ€μΊ”μ„ 보닀 μ—„κ²©ν•˜κ²Œ μ œν•œν•˜λŠ” 쿼리에 λΉ„ν•΄ μ„±λŠ₯이 μ €ν•˜λ  수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³ 

λ₯Ό hint() max() μ‹€ν–‰ find() ν•˜λ €λ©΄ ν•„λ“œ λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • 인덱슀 _id λ₯Ό λͺ…μ‹œμ μœΌλ‘œ { _id: <value> } μ§€μ •ν•΄μ•Ό 쿼리 .

μ•„λž˜ μ˜ˆμ‹œμ—μ„œλŠ” λ‹€μŒ λ¬Έμ„œλ₯Ό ν¬ν•¨ν•˜λŠ” products λΌλŠ” μ΄λ¦„μ˜ μƒ˜ν”Œ μ»¬λ ‰μ…˜ 을 λ§Œλ“­λ‹ˆλ‹€.

db.products.insertMany([
{ "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : NumberDecimal("1.99") },
{ "_id" : 2, "item" : "apple", "type" : "fuji", "price" : NumberDecimal("1.99") },
{ "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : NumberDecimal("1.29") },
{ "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : NumberDecimal("1.29") },
{ "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : NumberDecimal("1.29") },
{ "_id" : 6, "item" : "apple", "type" : "cortland", "price" : NumberDecimal("1.29") },
{ "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : NumberDecimal("2.99") },
{ "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : NumberDecimal("1.99") },
{ "_id" : 8, "item" : "orange", "type" : "valencia", "price" : NumberDecimal("0.99") },
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") }
])

μ»¬λ ‰μ…˜μ— λ‹€μŒ 인덱슀λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

db.products.createIndexes( [
{ "item" : 1, "type" : 1 },
{ "item" : 1, "type" : -1 },
{ "price" : 1 }
] )
  • { item: 1, type: 1 } 인덱슀max() 의 μˆœμ„œλ₯Ό μ‚¬μš©ν•˜μ—¬ item 인 apple 및 type 인 jonagold 의 경계 μ•„λž˜μ— μžˆλŠ” λ¬Έμ„œλ‘œ 쿼리 λ₯Ό μ œν•œν•©λ‹ˆλ‹€.

    db.products.find().max( { item: 'apple', type: 'jonagold' } ).hint( { item: 1, type: 1 } )

    이 μΏΌλ¦¬λŠ” λ‹€μŒ λ¬Έμ„œλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

    { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : NumberDecimal("1.29") }
    { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : NumberDecimal("1.99") }
    { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : NumberDecimal("1.99") }
  • 인덱슀 { price: 1 }의 μˆœμ„œλ₯Ό μ‚¬μš©ν•˜μ—¬ max()λŠ” NumberDecimal("1.99")κ³Ό λ™μΌν•œ price의 인덱슀 ν‚€ 경계 μ•„λž˜μ— μžˆλŠ” λ¬Έμ„œλ‘œ 쿼리λ₯Ό μ œν•œν•˜κ³  min())은 NumberDecimal("1.39")κ³Ό λ™μΌν•œ price의 인덱슀 ν‚€ 경계 μœ„μ— μžˆκ±°λ‚˜ μœ„μ— μžˆλŠ” λ¬Έμ„œλ‘œ 쿼리λ₯Ό μ œν•œν•©λ‹ˆλ‹€.

    μ°Έκ³ 

    max()μ—μ„œ μ§€μ •ν•œ λ°”μš΄λ“œκ°€ min()μ—μ„œ μ§€μ •ν•œ λ°”μš΄λ“œλ³΄λ‹€ 컀야 ν•©λ‹ˆλ‹€.

    db.products.find().min( { price: NumberDecimal("1.39") } ).max( { price: NumberDecimal("1.99") } ).hint( { price: 1 } )

    이 μΏΌλ¦¬λŠ” λ‹€μŒ λ¬Έμ„œλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

    { "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") }

λŒμ•„κ°€κΈ°

cursor.map

이 νŽ˜μ΄μ§€μ˜ λ‚΄μš©