आप अपने डेटा मॉडल पर पुनर्विचार करना चाह सकते हैं। जैसा कि वर्तमान में है, आप वह नहीं कर सकते जो आप चाहते हैं। सेंसर फ़ील्ड एक सरणी को संदर्भित करता है। आपके द्वारा प्रदान किए गए आदर्श दस्तावेज़ प्रारूप में, आपके पास उस सरणी के अंदर एक ही वस्तु है। फिर उस वस्तु के अंदर, आपके पास एक ही कुंजी के साथ दो फ़ील्ड हैं। इस संदर्भ में किसी 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 } } }
);
और एक साइड नोट के रूप में, यदि आप माप सरणी में प्रत्येक ऑब्जेक्ट में केवल एक स्ट्रिंग को स्टोर करने जा रहे हैं, तो हो सकता है कि आप संपूर्ण ऑब्जेक्ट के बजाय वास्तविक मानों को स्टोर करना चाहें { time: "value" }
. आपको इस तरह से डेटा को संभालना आसान लग सकता है।