MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongoose - ObjectId che fa riferimento a un documento secondario

Sì, è possibile, ma hai alcune opzioni.

Opzione 1:C come documento secondario

Se si desidera davvero utilizzare documenti secondari, non è necessario creare un modello separato. Devi cambiare il tuo riferimento all'array 'c'.

var C = new Schema({...});  
var B = new Schema({c: [C]});  
var A = new Schema({c: { type: ObjectId, ref: 'ModelB.c' });  

var Model_A = mongoose.model('ModelA', A);  
var Model_B = mongoose.model('ModelB', B); 

Opzione 2:C come modello

(Lo presento solo come alternativa, poiché il tuo esempio sembra ridondante poiché crei "C" come modello separato e come documento secondario)

In alternativa, può avere senso avere collezioni separate, puoi creare un modello di mangusta per ciascuna. Ciascuno sarà una collezione separata:

var Model_A = mongoose.model('ModelA', A);  
var Model_B = mongoose.model('ModelB', B);  
var Model_C = mongoose.model('ModelC', C);

In questo caso potresti voler fare riferimento direttamente a ciascun modello:

var C = new Schema({...});  
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});  
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' }); 

Il punto

Sì, è possibile, ma devi scegliere se vuoi C come modello o documento secondario.