2016-09-04 7 views
0

. Beispiel für Sammlung Flüge:Dynamische Feldnamen in MongoDB mit Mongoose

{ 
     "Orig" : "AGP", 
     "Dest" : "CMN", 
     "Description_Flight" : "One-Stop-Narrow Type", 
     "Description_Flight_2" : "WESTERN EUROPE/WESTERN EUROPE", 
     "Mkt_Al" : "0B" 

    } 

. Muster der Sammlung Koeff:

{ 
    "Regions" : "WESTERN EUROPE/WESTERN EUROPE", 
    "Non-Stop-Narrow Type" : 2.4109, 
    "Non-Stop-Supersonic" : 2.71828, 
    "One-Stop-Narrow Type" : 2.22554, 
    "One-Stop-Turbo" : 0.92312, 
    "One-Stop-Wide Type" : 11.24586, 
    "One-Stop Online-Turbo" : 0.07577 

} 

Was will ich?

Ich habe meinen Ausgang Sammlung, Flights und für jedes Dokument möchte ich eine Partitur setzen, eine Partitur, die auf der Description_Flight_2 und Description_Flight basiert.

Beispiel:

Zum Beispiel in meinem Beispiel habe ich:

 "Description_Flight" : "One-Stop-Narrow Type", 
     "Description_Flight_2" : "WESTERN EUROPE/WESTERN EUROPE", 

Also, ich gehen sollte, um die Coeff Sammlung und finden die Region:

  "WESTERN EUROPE/WESTERN EUROPE" 

und nimm dann den passenden Wert, hier sollte ich diesen Wert in dieser Zeile nehmen:

 "One-Stop-Narrow Type" : 2.22554, 

Ich habe versucht, dies:

mongoose.connect('mongodb://localhost/mydb'); 

var cSchema = new Schema({},{ strict: false, collection: 'flights' }),  
    dflights = mongoose.model("flights", cSchema); 
var rSchema = new Schema({},{ strict: false, collection: 'coeff' }), 
    coeff = mongoose.model("coeff", rSchema); 
    mongoose.set('debug', false); 

    mongoose.connection.on("open", function (err) { 
    if (err) throw err; 


    dflights.find({}).lean().exec(function (err, flights) { 
    if (err) throw err; 

    flights.forEach(function(flight) { 

var Flight_Description = "", score =0 ; 

    coeff.findOne({Regions : flight.Description_Flight_2}).lean().exec(function (err, coef) { 

Und hier die wichtigen Linien:

Flight_Description = flight.Description_Flight; 
    score = (coef != null) ? coef.Flight_Description : "Missed data"; 

Hier werden die letzten Zeilen

if (score != 0) 
    dflights.collection.update({_id:flight._id}, { $set : { score :score } });   
}); 
}); 
}); 
}); 

Bitte wie kann ich das oben genannte erreichen?

Antwort

0

Das sollte korrekten Code sein:

score = (coef != null) ? coef[Flight_Description] : "Missed data"; 
+0

Vielen Dank, es funktioniert. –

Verwandte Themen