Ich arbeite an einer Express-Js-Anwendung, wo ich ein verschachteltes Array aktualisieren muss. 1) Schema:Aktualisierung von verschachtelten Array-Mongoose
//Creating a mongoose schema
var userSchema = mongoose.Schema({
_id: {type: String, required:true},
name: String,
sensors: [{
sensor_name: {type: String, required:true},
measurements: [{time: String}]
}] });
2) Hier ist der Code-Schnipsel und Erklärung ist unten:
router.route('/sensors_update/:_id/:sensor_name/')
.post(function (req, res) {
User.findOneAndUpdate({_id:req.body._id}, {$push: {"sensors" :
{"sensor_name" : req.body.sensor_name , "measurements.0.time": req.body.time } } },
{new:true},function(err, newSensor) {
if (err)
res.send(err);
res.send(newSensor)
}); });
Ich bin der Lage, erfolgreich einen Wert an die Messungen Array Aktualisieren der findOneAndUpdate mit Push-Technik aber ich versage, wenn ich versuche, dem Sensor-Array mehrere Messungen hinzuzufügen. Hier
aktuell json ich, wenn ich erhalte, wenn ich eine zweite Messung an die Sensoren Array schreiben:
{
"_id": "Manasa",
"name": "Manasa Sub",
"__v": 0,
"sensors": [
{
"sensor_name": "ras",
"_id": "57da0a4bf3884d1fb2234c74",
"measurements": [
{
"time": "8:00"
}
]
},
{
"sensor_name": "ras",
"_id": "57da0a68f3884d1fb2234c75",
"measurements": [
{
"time": "9:00"
}
]
}]}
Aber das richtige Format Ich möchte ist, mehrere Messungen mit dem Sensoren Array wie folgt veröffentlichen:
Rechts JSON-Format wäre:
{
"_id" : "Manasa",
"name" : "Manasa Sub",
"sensors" : [
{
"sensor_name" : "ras",
"_id" : ObjectId("57da0a4bf3884d1fb2234c74"),
"measurements" : [
{
"time" : "8:00"
}
],
"measurements" : [
{
"time" : "9:00"
}
]
}],
"__v" : 0 }
Bitte schlagen Sie einige Ideen diesbezüglich vor. Danke im Voraus.
Vielleicht kann diese [Antwort] (http://stackoverflow.com/questions/23577123/update-nested-array-with-mongoose-mongodb?rq=1) Ihnen helfen, den Weg zu finden. –
Danke, aber ich bin in der Lage, einen einzelnen Wert zu aktualisieren. Mein Problem ist, dass ich versage, während ich versuche, mehrere Messwerte (Array) auf Grundlage des Sensornamens in das Sensor-Array zu übertragen. – HitRefresh
Wie @Hayden vorgeschlagen, ändern Sie besser Ihr Schema. Ihr aktuelles Schema ist praktisch ungültig. Schlüssel innerhalb eines Objekts müssen eindeutig sein. Versuchen Sie einen Online-JSON-Parser und Sie werden den Fehler bemerken. –