データモデルを再考することをお勧めします。現在のように、あなたはあなたが望むことを達成することはできません。センサーフィールドはアレイを指します。提供した理想的なドキュメント形式では、その配列内に単一のオブジェクトがあります。次に、そのオブジェクト内に、まったく同じキーを持つ2つのフィールドがあります。 JSONオブジェクト、またはこのコンテキストのmongoドキュメントでは、同じオブジェクト内に重複するキーを含めることはできません。
ここで何を探しているのかは明確ではありませんが、おそらく次のようなものを探すのが最善でしょう:
{
"_id" : "Manasa",
"name" : "Manasa Sub",
"sensors" : [
{
"sensor_name" : "ras",
"_id" : ObjectId("57da0a4bf3884d1fb2234c74"),
"measurements" : [
{
"time" : "8:00"
},
{
"time" : "9:00"
}
]
},
{
// next sensor in the sensors array with similar format
"_id": "",
"name": "",
"measurements": []
}],
}
これが必要な場合は、これを試すことができます:
User.findOneAndUpdate(
{ _id:req.body._id "sensors.sensor_name": req.body.sensor_name },
{ $push: { "sensors.0.measurements": { "time": req.body.time } } }
);
また、補足として、測定値配列の各オブジェクトに1つの文字列のみを格納する場合は、オブジェクト全体ではなく、実際の値のみを格納することをお勧めします{ time: "value" }
。この方法でデータを処理する方が簡単な場合があります。