λ¬Έμμ λ°°μ΄ μ λ°μ΄νΈ
μ΄ νμ΄μ§μ λ΄μ©
κ°μ
μ΄λ² κ°μ΄λμμλ MongoDB Java λλΌμ΄λ²λ‘ λ¬Έμμμ λ°°μ΄μ μ λ°μ΄νΈνλ λ°©λ²μ μμλ΄ λλ€.
λ°°μ΄μ μ λ°μ΄νΈνλ €λ©΄ λ€μμ μνν΄μΌ ν©λλ€.
μνν μ λ°μ΄νΈ μ§μ
μ λ°μ΄νΈλ₯Ό μ μ©ν λ°°μ΄ μμ μ§μ
λ€μ μ¬μμ μ¬μ©νμ¬ μ λ°μ΄νΈ μμ μν
μν λ¬Έμ
λ€μ μΉμ μμλ μ΄ μν λ¬Έμλ₯Ό μ λ°μ΄νΈνλ μλ₯Ό μ 곡ν©λλ€.
{ "_id": 1, "color": "green", "qty": [8, 12, 18] }
μ΄ νμ΄μ§μ μμ μμλ MongoCollection
ν΄λμ€μ findOneAndUpdate()
λ©μλλ₯Ό μ¬μ©νμ¬ λ¬Έμ λ₯Ό μ‘°ν νκ³ μ
λ°μ΄νΈ ν©λλ€. κ° μμ μμλ FindOneAndUpdateOptions
ν΄λμ€μ μΈμ€ν΄μ€ λ₯Ό μ¬μ©νμ¬ μ
λ°μ΄νΈ κ° λ°μν ν MongoDB κ° λ¬Έμ λ₯Ό μ‘°ν νλλ‘ ν©λλ€. findOneAndUpdate()
λ©μλμ λν μμΈν λ΄μ©μ λ³΅ν© μ°μ° κ°μ΄λ λ₯Ό μ°Έμ‘°νμΈμ.
μ λ°μ΄νΈ μ§μ
μ
λ°μ΄νΈλ₯Ό μ§μ νλ €λ©΄ Updates
λΉλλ₯Ό μ¬μ©ν©λλ€. Updates
λΉλλ μ
λ°μ΄νΈ μ¬μμ ꡬμ±νλ μ μ μ νΈλ¦¬ν° λ©μλλ₯Ό μ 곡ν©λλ€. λ°°μ΄κ³Ό ν¨κ» Updates
λΉλλ₯Ό μ¬μ©νλ λ°©λ²μ λν μμΈν λ΄μ©μ μ
λ°μ΄νΈ λΉλ κ°μ΄λλ₯Ό μ°Έμ‘°νμΈμ.
λ€μ μμμμλ μ΄λ¬ν μμ μ μνν©λλ€.
μν λ¬Έμμ λν 쿼리
쿼리 νν°μ μΌμΉνλ λ¬Έμμ
qty
λ°°μ΄μ '17'μ μΆκ°
Bson filter = Filters.eq("_id", 1); Bson update = Updates.push("qty", 17); FindOneAndUpdateOptions options = new FindOneAndUpdateOptions() .returnDocument(ReturnDocument.AFTER); Document result = collection.findOneAndUpdate(filter, update, options); System.out.println(result.toJson());
μμ μμμλ μλ³Έ λ¬Έμλ₯Ό λ€μ μνλ‘ μ λ°μ΄νΈν©λλ€:
{ "_id": 1, "color": "green", "qty": [8, 12, 18, 17] }
λ°°μ΄ μμ μ§μ
μ λ°μ΄νΈν λ°°μ΄ μμλ₯Ό μ§μ νλ €λ©΄ μμΉ μ°μ°μλ₯Ό μ¬μ©ν©λλ€. μμΉ μ°μ°μλ μ λ°μ΄νΈν 첫 λ²μ§Έ, μ 체 λλ νΉμ λ°°μ΄ μμλ₯Ό μ§μ ν μ μμ΅λλ€.
μμΉ μ°μ°μλ₯Ό μ¬μ©νμ¬ λ°°μ΄μ μμλ₯Ό μ§μ νλ €λ©΄ μ νκΈ°λ²μ μ¬μ©ν©λλ€. μ νκΈ°λ²μ BSON κ°μ²΄λ₯Ό νμνκΈ° μν μμ± μ‘μΈμ€ ꡬ문μ λλ€.
μμΈν λ΄μ©μ μ νκΈ°λ²μ λν MongoDB Server μλ μ λ ₯ νλͺ©μ μ°Έμ‘°νμΈμ.
첫 λ²μ§Έ μΌμΉνλ λ°°μ΄ μμ
쿼리 νν°μ μΌμΉνλ 첫 λ²μ§Έ λ°°μ΄ μμλ₯Ό μ
λ°μ΄νΈνλ €λ©΄ μμΉ $
μ°μ°μλ₯Ό μ¬μ©ν©λλ€. μμΉ $
μ°μ°μλ₯Ό μ¬μ©νλ €λ©΄ λ°°μ΄ νλκ° μΏΌλ¦¬ νν°μ μΌλΆλ‘ λνλμΌ ν©λλ€.
μμ
λ€μ μμμμλ μ΄λ¬ν μμ μ μνν©λλ€.
κ° '18'μ ν¬ν¨νλ
qty
νλκ° μλ λ¬Έμλ₯Ό 쿼리쿼리 νν°μ μΌμΉνλ λ¬Έμμ 첫 λ²μ§Έ λ°°μ΄ κ°μ '3'λ§νΌ κ°μ
Bson filter = Filters.eq("qty", 18); Bson update = Updates.inc("qty.$", -3); FindOneAndUpdateOptions options = new FindOneAndUpdateOptions() .returnDocument(ReturnDocument.AFTER); Document result = collection.findOneAndUpdate(filter, update, options); System.out.println(result.toJson());
μμ μμμλ μλ³Έ λ¬Έμλ₯Ό λ€μ μνλ‘ μ λ°μ΄νΈν©λλ€:
{ "_id": 1, "color": "green", "qty": [8, 12, 15] }
μ΄ μΉμ μ μΈκΈλ λ©μλ λ° μ°μ°μμ λν μμΈν λ΄μ©μ λ€μ 리μμ€λ₯Ό μ°Έμ‘°νμΈμ.
μμΉ $ μ°μ°μ μλ² μλ μ λ ₯
inc() API λ¬Έμ
λͺ¨λ λ°°μ΄ μμ μΌμΉ
λ°°μ΄μ λͺ¨λ μμλ₯Ό μ
λ°μ΄νΈνλ €λ©΄ λͺ¨λ μμΉ $[]
μ°μ°μλ₯Ό μ¬μ©ν©λλ€.
μμ
λ€μ μμμμλ μ΄λ¬ν μμ μ μνν©λλ€.
μν λ¬Έμμ λν 쿼리
쿼리 νν°μ μΌμΉνλ λ°°μ΄ μμμ '2'λ₯Ό κ³±ν¨
Bson filter = Filters.eq("_id", 1); Bson update = Updates.mul("qty.$[]", 2); FindOneAndUpdateOptions options = new FindOneAndUpdateOptions() .returnDocument(ReturnDocument.AFTER); Document result = collection.findOneAndUpdate(filter, update, options); System.out.println(result.toJson());
μμ μμμλ μλ³Έ λ¬Έμλ₯Ό λ€μ μνλ‘ μ λ°μ΄νΈν©λλ€:
{ "_id": 1, "color": "green", "qty": [16, 24, 36] }
μ΄ μΉμ μ μΈκΈλ λ©μλ λ° μ°μ°μμ λν μμΈν λ΄μ©μ λ€μ 리μμ€λ₯Ό μ°Έμ‘°νμΈμ.
λͺ¨λ μμΉ $[] μ°μ°μ μλ² μλ νλͺ©
mul() API λ¬Έμ
μ¬λ¬ λ°°μ΄ μμ μΌμΉνκΈ°
νν°μ μΌμΉνλ λ°°μ΄ μμλ₯Ό μ
λ°μ΄νΈνλ €λ©΄ νν°λ§λ μμΉ $[<identifier>]
μ°μ°μλ₯Ό μ¬μ©νμΈμ. μ
λ°μ΄νΈν λ°°μ΄ μμλ₯Ό μ§μ νλ €λ©΄ μ
λ°μ΄νΈ μμ
μ λ°°μ΄ νν°λ₯Ό ν¬ν¨ν΄μΌ ν©λλ€.
<identifier>
μ(λ) λ°°μ΄ νν°μ μ§μ νλ μ΄λ¦μ
λλ€. μ΄ κ°μ μλ¬Έμλ‘ μμν΄μΌ νλ©° μμ«μλ§ ν¬ν¨ν μ μμ΅λλ€.
μμ
λ€μ μμμμλ μ΄λ¬ν μμ μ μνν©λλ€.
μν λ¬Έμμ λν 쿼리
'15'λ³΄λ€ μμ κ°μ κ²μνλλ‘ λ°°μ΄ νν°λ₯Ό μ€μ ν©λλ€.
쿼리 νν°μ μΌμΉνλ λ°°μ΄ μμλ₯Ό '5'λ§νΌ μ¦κ°μν΅λλ€.
Bson filter = Filters.eq("_id", 1); Bson smallerFilter = Filters.lt("smaller", 15); FindOneAndUpdateOptions options = new FindOneAndUpdateOptions() .returnDocument(ReturnDocument.AFTER) .arrayFilters(Arrays.asList(smallerFilter)); Bson update = Updates.inc("qty.$[smaller]", 5); Document result = collection.findOneAndUpdate(filter, update, options); System.out.println(result.toJson());
μμ μμμλ μλ³Έ λ¬Έμλ₯Ό λ€μ μνλ‘ μ λ°μ΄νΈν©λλ€:
{ "_id": 1, "color": "green", "qty": [13, 17, 18] }
μ΄ μΉμ μ μΈκΈλ λ©μλ λ° μ°μ°μμ λν μμΈν λ΄μ©μ λ€μ 리μμ€λ₯Ό μ°Έμ‘°νμΈμ.
νν°λ§λ μμΉ $[<identifier>] μ°μ°μ μλ² μλ μ λ ₯
inc() API λ¬Έμ