2016-10-31 14 views
0

ich ein Unter Dokument Dienste haben bevölkern in einer Sammlung nannte es serviceid und Typ enthält. serviceID bezieht sich auf zwei Sammlungen internen Service und externen Service variiert je nach Typ Feld.Ist es möglich, in Mungo zu haben Zustand

internalServices:[{ 
      serviceID:ObjectId('0000000000000'), 
      serviceDesc:'sweeping' 
     }, 
     { 
      serviceID:ObjectId('0000000000000'), 
      serviceDesc:'floor cleaning' 
     }] 


externalServices:[{ 
       serviceID:ObjectId('0000000000000'), 
       serviceDesc:'painting' 
      }, 
      { 
       serviceID:ObjectId('0000000000000'), 
       serviceDesc:'white washing' 
      }] 

Oben zwei sind Lookup-Sammlung. Und hier die Firmensammlung

_id:"xxxxxxxxxxxxxxxx", 
    name: 'xxxx', 
    Address:'xxx', 

    services:[{ 
      serviceID:ObjectId('0000000000000'), 
      type: internalservice 
     }, 
     { 
      serviceID:ObjectId('0000000000000'), 
      type: externalservice 
     }] 

Hier möchte ich Service-Beschreibung basierend auf Typ zu füllen.

Ist ein bedingter Pfad beim Auffüllen möglich?

Hier ist mein Code

Company.findOne({"_id": mongoose.Types.ObjectId(req.params.companyID)}, 
       {}) 
      .populate('services.serviceID','serviceDesc','InternalService') 
      .exec(function (err, companyInfo) { 

       console.log(companyInfo); 
      }); 

Diese auffüllt interne Service-Beschreibung, aber ich brauche für Typen externalservice externe Service-Beschreibung zu füllen. Wenn ich zwei Auffüllungen habe, ersetzt das zweite Auffüllen das Ergebnis durch Null für nicht übereinstimmende Dokumente.

Antwort

0

Sie können in bevöl where Bedingungen umfassen wie:

Story 
.find(...) 
.populate({ 
    path: 'fans', 
    match: { age: { $gte: 21 }}, 
    select: 'name -_id', 
    options: { limit: 5 } 
}) 
.exec() 

Here is the Mongoose Populate Documentation

Verwandte Themen