MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

नेस्टेड सरणी नेवला अद्यतन कर रहा है

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:किसी नेस्टेड दस्तावेज़ के अंदर किसी आईडी द्वारा दस्तावेज़ कैसे खोजें

  2. Laravel Jensseger Mongodb संबंधित है, बहुत से खाली सरणी देता है

  3. MongoDB में एक विशिष्ट नाम के साथ एक इंडेक्स कैसे बनाएं?

  4. संग्रह के माध्यम से 1000 तक कैसे पढ़ा जाए?

  5. MongoDB में एकल संग्रह में दस्तावेज़ों के बीच सेट के चौराहे को कैसे खोजें?