猫鼬用额外的数据填充引用

时间:2019-06-12 11:09:42

标签: mongodb mongoose

我有两个收藏:网球比赛中有两名球员和一名球员

matches集合如下:

{ 
    "_id" : ObjectId("5ce51febc6dd820a820f20a5"), 
    "players" : [
        ObjectId("5ce51c1af3cd6009a171a5b3"), 
        ObjectId("5ce51c1af3cd6009a171a350")
    ], 
    "result" : "4:6 6:3 7:6(7) 7:6(8)"    
},    
[...]

使用此架构:

const matchsSchema = Schema({      
    players: [{ type: Schema.Types.ObjectId, ref: 'Player' }],  
    result: String
}) 

players这样的集合:

{ 
    "_id" : ObjectId("5ce51c1af3cd6009a171a5b3"),               
    "name" : "Serena Williams",         
    "country" : "USA"         
},    
[...]

使用此架构:

const playersSchema = mongoose.Schema({                
    name: String,  
    country: String
}) 

在这里都很容易。我需要为matches集合中的玩家添加额外的数据,该数据仅与特定比赛中的玩家相关,因为该原因将其放置在比赛中而不是玩家中。 >

我需要一个matches集合,例如:

{ 
    "_id" : ObjectId("5ce51febc6dd820a820f20a5"), 
    "players" : [
    {
      ref: ObjectId("5ce51c1af3cd6009a171a5b3"), 
      prob: 2.1
    },
    {
      ref: ObjectId("5ce51c1af3cd6009a171a350"), 
      prob: 2.9
    },
    ], 
    "result" : "4:6 6:3 7:6(7) 7:6(8)"    
},    
[...]

然后用populate,我需要这个:

{ 
   "_id" : ObjectId("5ce51febc6dd820a820f20a5"), 
   "players" : [
   {
     name: "Serena Williams",
     country: "USA"
     prob: 2.1
   },
   {
     name: "Garbiñe Muguruza",
     country: "Spain", 
     prob: 2.9
   }],
   "result" : "4:6 6:3 7:6(7) 7:6(8)"    
},    
[...]

反正有做这个模式吗?

0 个答案:

没有答案