MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongoose - ObjectId qui fait référence à un sous-document

Oui, c'est possible, mais vous avez quelques options.

Option 1 :C en tant que sous-document

Si vous voulez vraiment utiliser des sous-documents, vous n'avez pas besoin de créer un modèle séparé. Vous devez changer votre référence au tableau '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); 

Option 2 : C comme modèle

(Je ne présente cela que comme une alternative - car votre exemple semble redondant puisque vous créez 'C' en tant que modèle séparé ainsi qu'un sous-document)

Alternativement, il peut être judicieux d'avoir des collections séparées, vous pouvez créer un modèle de mangouste pour chacune. Chacun fera l'objet d'une collection distincte :

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

Dans ce cas, vous souhaiterez peut-être référencer directement chaque modèle :

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

Le point

Oui, c'est possible, mais vous devez choisir si vous voulez C comme modèle ou sous-document.