2017-10-08 1 views
0

Ich versuche, das erste Element in einem Array zu sehen, in Mungo gespeichert wird. Nehmen wir an, es sieht so aus:mongoose peek auf das erste Dokument in Array

var batterySchema = mongoose.Schema({ percent: Number, minutes: Number, time: Date, }) var robotSchema = mongoose.Schema({ name: String, battery_life: [batterySchema], }); Und ich werde ständig Elemente hinzufügen, um das Battery Life-Dokument für einen bestimmten Roboter mit Unshift.

Jetzt, wenn ich jederzeit in der Lage sein soll, das neueste battery_life Element zu greifen, scheint es, dass ich von diesem Array abspringen und einfach nicht speichern kann. Aber ich kann nicht herausfinden, ob das irgendwie schlecht ist. Ich wäre komfortabler mit einer dedizierten Peek-Funktion, kann aber keine finden.

Alternativ könnte ich einfach ein weiteres Feld hinzufügen, das immer den neuesten Batteriestatus hat. Wäre das besser?

Antwort

0

Sie können die Projektion verwenden, um nur das erste Array-Element zu projizieren.

Angenommen, Ihr Mungo Modell ist Roboter, sollte diese Arbeit:

Robot.find({}, { "battery_life.0": 1 }, function(err, docs) { 
    // Callback code 
}) 

Dies wird nur das _id Feld zurückzukehren (standardmäßig zurückgegeben) und das erste Element aus den battery_life Array für die übereinstimmende Dokumente.

Wenn Sie nur das letzte Element in dem Array dann sollte dies stattdessen arbeiten:

Robot.find({}, { "battery_life": { $slice: -1 } }, function(err, docs) { 
    // Callback code 
}) 
Verwandte Themen