API http://mongoosejs.com/docs/populate.htmlμ νμΈνκ³ μλνμ΅λλ€. populate
λ μΈκ΅ _id
μμλ§ μλνλ κ² κ°μ΅λλ€. match
μ΅μ
μ΄ μμ΄λ _id
쿼리 쑰건μ νν°λ§ 쑰건μ μΆκ°νλ©΄ λ©λλ€. _id
μ κ΄λ ¨λμ§ μμ νλλ‘ μ±μΈ λ°©λ²μ μμ΅λλ€.
λ΄ νλ‘μ νΈμμλ _id
λ₯Ό ObjectIdλ‘ μ μ§νκ³ μλ μ¦κ° μ«μλ‘ λ€λ₯Έ νλκ° μμ΅λλ€. μλ₯Ό λ€μ΄ customers
λͺ¨λΈμλ _id
κ° κ°μ²΄λ‘ μκ³ cuid
κ° μ¦λΆ λ²νΈλ‘ μμ΅λλ€. λ€λ₯Έ 컬λ μ
μ λ¨μ§μ μ°Έμ‘° cuid
νμ§μ _id
.
μ΄κ±Έ 컀μ€ν°λ§μ΄μ§ ν μ μλ€λ©΄ μΌλ§λ μ’μκΉμ?
μ΄ κΈ°λ₯μ΄ λλ½λλ λμμΈ μ ν μ¬νμ΄ μμ΅λκΉ?
μ΄κ²μ μ¬μ©μ μ μν μ μμΌλ©΄ μ’κ² μ§ _id
μ§κΈ λΉμ₯μ
νλμ λ€λ₯Έ νλλΏλ§ μλλΌ νλ μ§ν©μμλ μ±μΈ μ μλ κΈ°λ₯μ μ€λ©μ μ μ νκ² μ§μνλ λ° κ±°μ νμνλ©°, μ΄λ μ°λ¦¬μκ² ν° μ¬μ© μ¬λ‘μ λλ€.
μλ₯Ό λ€μ΄, "subscription"μ λν λΆν ν€λ₯Ό κ°μ§ μ μλ "students" 컬λ μ μ΄ μμ΅λλ€. μΉμ λͺ¨λΈ(νμ λ°°μ΄ ν¬ν¨)μμ νμ λ°μ΄ν°λ₯Ό μ±μΈ λ λ¬Έμμ λν ꡬλ μ΄ μμ§λ§ 맀νν΄μΌ νλ€κ³ μ§μ νλ λμ "student"μ μ μ₯λ _idλ₯Ό κΈ°λ°μΌλ‘λ§ μ‘°νλ©λλ€. λ¬Έμ "κ³Όμ " νλλ₯Ό νμμ "κ³Όμ "λ‘.
κ·Έλ° λ€μ μ±μ°κΈ°λ₯Ό μνν λ μ€λ ν€ μμ΄ μ‘°νλ₯Ό μννκΈ° λλ¬Έμ μ€λ©μ΄ μΈλͺ¨μκ² λμ΄ νλκ° μλ λ°μ΄ν°λ₯Ό κ²μνκΈ° μν΄ λͺ¨λ μ€λλ₯Ό μ μ€ν΄μΌ ν©λλ€.
μ΄κ²μ μ°λ¦¬κ° μμ μ μνν μμΉμ λν μ§μΉ¨μ μ»μ μλ§ μλ€λ©΄ κ°λ° μκΈμ μ§μνκ±°λ μ€μ€λ‘ ν μ μλ κ²μ λλ€. μ΄κ²μ μ°λ¦¬ νμ¬(GradeCam)μ μ£Όμ μꡬ μ¬νμ λλ€.
@taxilian shardKey
μ€ν€λ§ μ΅μ
μ μ€μ νκ³ μμ΅λκΉ? AFAIK κ·Έκ²μ΄ λ°λ‘ κ·Έ μ΅μ
μ
λλ€.
μ΄ λ¬Έμ μ λν ν΄κ²°μ± μ μ°Ύκ³ μμκΈ° λλ¬Έμ μμ§ μμνμ§ μμμ΅λλ€. μ±μ°κΈ°λ shardKeyλ₯Ό κ³ λ €ν©λκΉ? λ΄ μ΄ν΄λ shardKeyκ° μ λ°μ΄νΈ λ° μ½μ μλ§ μν₯μ λ―ΈμΉλ€λ κ²μ λλ€.
μλ₯Ό λ€μ΄ userId(μ: _id) νλλΏλ§ μλλΌ userType, userGroup λ±μΌλ‘ μ±μΈ μ μκΈ°λ₯Ό μν©λλ€.
κ°μ¬ ν΄μ!
+1
+1μ λ§€μ° μ μ©ν κ²μ λλ€
μ¬κΈ°μ +1μ΄ λμΌν©λλ€!
+1 μ΄κ±° κ°κ³ μΆλ€
+1
+1
+1
key
μ κ°μ 맀κ°λ³μλ₯Ό μΆκ°νμ¬ μ±μ°λ €λ λ³μλ₯Ό μ νν μ μμΌλ©΄ νΉν μ’μ΅λλ€.
μλ₯Ό λ€μ΄ author
λ° comments
맀κ°λ³μλ₯Ό μ±μ°κ³ μΆμ κ²μλ¬Όμ΄ μμ§λ§ 맀κ°λ³μκ° μ±μ°κΈ° μ μ λΉ ObjectId 맀κ°λ³μ(μ¬μ©μ μ΄λ¦ λ° λκΈ μ λͺ©)λ₯Ό 보μ νκ³ μλ κ²½μ°:
{
author: "user1",
comments:["comment5", "comment6"],
title:"Post1"
}
mongoκ° μ‘°νν 맀κ°λ³μλ₯Ό μ μ μλλ‘ "key"μ κ°μ 맀κ°λ³μλ₯Ό μΆκ°ν μ μμΌλ©΄ μ’μ κ²μ λλ€.
Posts.find().populate([{path:"author", model:"Users", key:"username"}, {path:"comments", model:"Comments", key:"title"}])
μ΄λ κ² νλ©΄ author
맀κ°λ³μλ₯Ό μ¬μ©μ μ΄λ¦μΌλ‘ μ°Ύμ μ¬μ©μλ‘ μ±μ°κ³ comments
맀κ°λ³μλ₯Ό μ λͺ©μΌλ‘ μ°Ύμ μ£ΌμμΌλ‘ μ±μλλ€(μ λͺ©λ³ μ£Όμμ΄ μ½κ° λΉνμ€μ μ΄λΌλ κ²μ μκ³ μμ§λ§ μμ ).
+1
+1
+1
+1
+1
+1
+1
ν° λμν©λλ€. μ¬μ©μ μ§μ μΈκ΅¬ ꡬμ±νλ₯Ό μ μνλ κΈ°λ₯μ μν©λλ€. νμΌ κ²½λ‘μΈ νλ μ΄μμ νλκ° μλ λͺ¨λ μ€ν€λ§μ μ ν©νλ―λ‘ μ±μ°κΈ°κ° μ μ₯μμμ μ½μ μ μμ΅λλ€.
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
μ΄ μ½λλ₯Ό μλνμμμ€: https://github.com/alexmingoia/mongoose-populate-virtuals.
μ¬μ€, Alexμ μ½λλ₯Ό λ©μΈ μ μ₯μμ λ³ν©νμ§ μκ³ μ΄κ²μ ν΅μ¬ κΈ°λ₯μΌλ‘ λ§λ€ μ΄μ κ° λ¬΄μμ λκΉ?
@rturk κ·Έ νλ¬κ·ΈμΈμ΄ μ λ§ λ§μμ @alexmingoia λΉμ μ μκ°μ 무μμ λκΉ? λͺ¨λμ λͺ½κ΅¬μ€ μ½μ΄μ λ³ν©? κ°μμ μ¬μ©νμ¬ λ³΄λ€ μΌλ°μ μΈ μ±μ°κΈ° (μ€μ νλλ₯Ό dbμ μ μ§νμ§ μκ³ )λ₯Ό μ²λ¦¬νλ€λ μμ΄λμ΄λ μ λ§ κ°λ ₯ν©λλ€.
μ΄μμ μΌ κ²μ
λλ€. Query.prototype.populate
λ° κΈ°ν ν΅μ¬ κΈ°λ₯μ μ€λ²λ‘λνκΈ° λλ¬Έμ ν΅μ¬μμ ν¨μ¬ λ μ’μ΅λλ€.
λ΄κ° ν 리νμ€νΈλ₯Ό μμ±νλ κ²μ λ§λ μ μΌν κ²μ ν μ€νΈ 컀λ²λ¦¬μ§κ° κ±°μ λλ μ ν μκ³ λ¬Έμκ° λΆμ‘±νλ€λ κ²μ λλ€. μ¬λ¬ μλ리μ€μμ νλ‘λμ νκ²½μμ μ¬μ©νκ³ μμΌλ©° μμ μ μ΄μ§λ§ λκ΅°κ°κ° ν μ€νΈ μ€μνΈλ₯Ό μμ±νλ€λ©΄ λ¬Έμνν΄μΌ νλ λͺ κ°μ§ μ¬μν λ¬Έμ λ νΉμ΄μ μ΄ λλ¬λ μ μλ€κ³ μκ°ν©λλ€.
λκ΅°κ°κ° κΈ°κΊΌμ΄ ν μ€νΈ μ€μνΈλ₯Ό λ€λ£° μν₯μ΄ μμ΅λκΉ? κ·Έλ μ§ μμ κ²½μ° - ν μ μμ§λ§ λ€μ λ¬ μ΄μ μ μ°©λ₯ν κ²μΌλ‘ κΈ°λνμ§λ μμ΅λλ€.
λ΄κ° λ³Όκ²μ. λλ μ΄μ¨λ μ±μ°κΈ° λ₯Ό λ€μ μμ±νλ €κ³ νμ΅λλ€. :)
μ½λμ λν΄ μ§λ¬Έμ΄ μλ κ²½μ° IRC(freenode, amingoia
) λλ gitterμμ μ λ₯Ό Pingνμμμ€.
https://github.com/whitecolor/mongoose-fill μ λ€λ₯Έ λͺ¨λΈμ λ°μ΄ν°λ₯Ό μ¬μ©νμ¬ μ±μ°κΈ°λ νλ₯ν©λλ€.
+1
+1
+1
μ΄κ²μ νμμ λλ€ :)
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+3
+1
κ°μ₯ μ μ©ν λκΈ
@rturk κ·Έ νλ¬κ·ΈμΈμ΄ μ λ§ λ§μμ @alexmingoia λΉμ μ μκ°μ 무μμ λκΉ? λͺ¨λμ λͺ½κ΅¬μ€ μ½μ΄μ λ³ν©? κ°μμ μ¬μ©νμ¬ λ³΄λ€ μΌλ°μ μΈ μ±μ°κΈ° (μ€μ νλλ₯Ό dbμ μ μ§νμ§ μκ³ )λ₯Ό μ²λ¦¬νλ€λ μμ΄λμ΄λ μ λ§ κ°λ ₯ν©λλ€.