sql >> Databasteknik >  >> NoSQL >> MongoDB

mongoose - ObjectId som refererar till ett underdokument

Ja det är möjligt, men du har några alternativ.

Alternativ 1:C som ett underdokument

Om du verkligen vill använda underdokument behöver du inte skapa en separat modell. Du måste ändra din referens till 'c'-matrisen.

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); 

Alternativ 2:C som modell

(Jag presenterar bara detta som ett alternativ - eftersom ditt exempel verkar överflödigt eftersom du skapar 'C' som en separat modell såväl som ett underdokument)

Alternativt kan det vara vettigt att ha separata samlingar, du kan skapa en mangustmodell för varje. Var och en kommer att vara en separat samling:

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

I det här fallet kanske du vill referera direkt till varje modell:

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

Poängen

Ja, det är möjligt, men du måste välja om du vill ha C som modell eller underdokument.



  1. Använda Redis för köer för flera Laravel-applikationer på en enda server

  2. Max och min i mongodb

  3. tar bort objekt från kapslad array av objekt mongodb

  4. Skapa en ISODate för MongoDB med PHP