중첩 배열을 업데이트해야하는 express js 응용 프로그램을 작성 중입니다. 1) 스키마 : 여기Nested 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) 는 코드이며, 설명은 다음과 같습니다 :
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)
}); });
나는 성공적으로 푸시 기술로 findOneAndUpdate를 사용하여 측정 배열에 값을 업데이트 할 수 있어요 하지만 센서 배열에 여러 측정 값을 추가하려고하면 실패합니다.
{
"_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"
}
]
}]}
하지만이 같은 센서 어레이를 사용하여 여러 측정을 게시되어 원하는 올바른 형식 : 나는 센서 어레이에 두 번째 측정을 게시 할 때 내가 얻을 경우 여기
내가 얻을 현재 JSON입니다오른쪽 JSON 형식은 다음과 같습니다
{
"_id" : "Manasa",
"name" : "Manasa Sub",
"sensors" : [
{
"sensor_name" : "ras",
"_id" : ObjectId("57da0a4bf3884d1fb2234c74"),
"measurements" : [
{
"time" : "8:00"
}
],
"measurements" : [
{
"time" : "9:00"
}
]
}],
"__v" : 0 }
이것에 관해 몇 가지 제안을하십시오. 미리 감사드립니다.
어쩌면이 [답변] (http://stackoverflow.com/questions/23577123/update-nested-array-with-mongoose-mongodb?rq=1)이 길을 찾을 수 있습니다. –
감사하지만 단일 값을 업데이트 할 수 있지만 센서 이름을 기준으로 센서 배열에 여러 측정 (배열) 값을 업데이트하는 동안 실패합니다. – HitRefresh
@Hayden이 제안 했으므로 스키마를 더 잘 변경하십시오. 귀하의 현재 스키마는 사실상 유효하지 않습니다. 객체 내부의 키는 고유해야합니다. 온라인 JSON 구문 분석기를 사용하면 오류가 발생합니다. –