2017-06-08 2 views
0

Ich arbeite mit Mungo, um meine MongoDB-Sammlungen zu verwalten. Ich habe eine Sammlung, die zwei numerische Felder enthält. Ich möchte ein anderes Feld mit dem Ergebnis der Division dieser beiden Felder jedes Mal, dass einer von ihnen aktualisiert wird.Mongo - Aktualisiere ein Feld mit dem Ergebnis eines anderen Feldes, wenn ein Dokument aktualisiert wird

Lassen Sie uns saß das ist meine Mongo Sammlung:

{ 
    id: 1, 
    num1: 100, 
    num2: 50, 
    result: 2 
}, 
{ 
    id: 2, 
    num1: 200, 
    num2: 10, 
    result: 20 
}, 
{ 
    id: 1, 
    num1: 40, 
    num2: 5, 
    result: 8 
} 

nun das Element mit der ID 2 aktualisiert wird, und num1 wird auf 50 I neu berechnen möchten und Ergebnisfeld eingestellt mit dem neuen korrekten Wert (10).

(zum Aktualisieren von Elementen verwende ich die Funktion bulk.find(). Upsert(). UpdateOne()).

Wie kann ich das mit weniger Leistungseinbußen machen?

Antwort

1

Sie können eine vorge speichern Haken verwenden, um die Berechnung zu tun:

schema.pre('save', function(next) { 
    this.result = this.num1/this.num2; 
    next(); 
}); 

... where 'Schema' Ihr Mungo-Schema ist.

Wenn Sie dann num1 oder num2 aktualisieren, wird das Ergebnis berechnet und gespeichert.

Verwandte Themen