के साथ एक दस्तावेज़ में एक औसत अद्यतन कर रहा है मैं निम्नलिखित MongoDB दस्तावेज़ है:MongoDB: 2 नेस्टेड सरणियों
{
_id: ObjectId(),
company_name: "Name",
registered: 2/21/2015 2:00,
trucks: [
{
truck_id: "TEB7622",
weight: 88.33,
capacity: 273.333,
length: 378.333,
width: 377.383,
average_grade: 2.5,
grades: [
{
grade_number: 4,
timestamp: 2/21/2015 2:00
}
]
},
{
truck_id: "TEB5572",
weight: 854.33,
capacity: 2735.333,
length: 378.333,
width: 37.383,
average_grade: 3.8,
grades: [
{
grade_number: 4,
timestamp: 2/21/2015 2:00
}
]
}
]
}
मैं प्रत्येक ट्रक average_grade
सभी grade_numbers
जोड़कर अद्यतन करना चाहते। मेरी समस्या यह है कि grade_numbers
मैं एक सरणी के भीतर एक सरणी में जोड़ने की कोशिश कर रहा हूं। मैंने ट्रक और ग्रेड सरणी दोनों को खोलने के लिए $unwind
का उपयोग करने का प्रयास किया है।
db.col.aggregate([
{$unwind: "$trucks"},
{$unwind: "$trucks.grades"},
{ $project: {
"_id": "$trucks.truck_id",
"trucks.average_grade": { $avg: { $sum: "trucks.grades.grade_number"} }
}
}])
मैं अपने क्वेरी के लिए अधिक कुछ जोड़ने के लिए है है:
यह है क्वेरी मैं का उपयोग कर की कोशिश की? मैं trucks.average_grades
के सभी अपडेट करना चाहता हूं, क्योंकि दस्तावेज़ में उनमें से बहुत से मैं अपडेट करने का प्रयास कर रहा हूं।
आप दस्तावेज़ – styvane
@ माइकल 9 अपडेट करने के लिए एकत्रीकरण का उपयोग नहीं कर सकते हैं तो मुझे दो प्रश्नों को सही तरीके से चलाने की आवश्यकता है? औसत प्राप्त करने के लिए औसत और एक प्राप्त करने के लिए एक? क्या मुझे औसत को "चर" पर स्टोर करना है? – suecarmol
डबल नेस्टेड सरणी एक अच्छा विचार नहीं है यदि आपको उनके अंदर डेटा पूछने की आवश्यकता है। वे ठीक हैं अगर डेटा सिर्फ प्रदर्शन के लिए है। शायद आपको डेटा मॉडल पर पुनर्विचार करना चाहिए? हो सकता है कि प्रत्येक ट्रक 'company_id' फ़ील्ड के साथ अपना स्वयं का दस्तावेज़ होना चाहिए? या प्रत्येक ग्रेड का अपना दस्तावेज़? आप एक सामान्य क्वेरी के लिए डबल अनइंड एकत्रीकरण पाइपलाइन पर भरोसा नहीं करना चाहते हैं, इसलिए जब तक क्वेरी असामान्य नहीं है, तब तक मैं नीचे दिए गए समाधान की अनुशंसा नहीं करता। – wdberkeley