2012-05-10 22 views
6

मैं मोंगोस/नोडजेस में नया हूं और मैं एक सरणी के भीतर एक सरणी के एक साधारण अद्यतन के साथ संघर्ष कर रहा हूं।mongoose में कैसे अपडेट करें?

यहाँ स्कीमा है:

var County = new Schema({ 
_id     : Schema.ObjectId, 
name    : String, 
biggestCity   : String 
}); 

var Country = new Schema({ 
_id     : Schema.ObjectId, 
name    : String, 
counties    : {type: [County], ref: "County"} 
}); 

var Continent = new Schema({ 
    _id  : Schema.ObjectId, 
    countries : {type: [Country], ref: "Country"}, 
}); 

और यहाँ अद्यतन कोड मैं कोशिश कर रहा है या नहीं:

var continents = mongoose.model("Continent"); 
var update = { "countries.counties.name": newName, "countries.counties.biggestCity": newBiggestCity }; 
var conditions = { "_id": countryId, "countries.name": countryName, "countries.counties.name": countyName }; 
var options = { multi: false }; 
wagers.update(conditions, update, options, function(err, numAffected) { 
    //callback code... 
}); 

जब यह कर, अरे में त्रुटि कहते हैं, "का उपयोग कर सरणी के लिए नहीं जोड़ी जा सकती स्ट्रिंग फ़ील्ड नाम 'काउंटी' '। इसका क्या मतलब है? मैं क्या गलत कर रहा हूं?

उत्तर

1

आपको बच्चे की वस्तु को किसी अन्य स्कीमा के रूप में परिभाषित करना चाहिए, न कि किसी अज्ञात वस्तु की सूची के रूप में। (Reference।)

Country को अलग स्कीमा के रूप में परिभाषित करने का प्रयास करें, घोंसला कि Continent में, तो अपना अपडेट करें।

+0

ठीक है। क्या स्कीमा को दोबारा परिभाषित किए बिना नेस्टेड सरणी को अपडेट करने का कोई वैकल्पिक तरीका नहीं है? – tremolo

+0

@ ट्रेमोलो: वहां हो सकता है या नहीं (मेरा मोंगोस-फू अभी भी कमजोर है), लेकिन मुझे लगता है कि वैसे भी 'देश' के लिए एक स्कीमा परिभाषित करना अच्छा अभ्यास है। – Ashe

+0

@tremolo: क्या आप अपना प्रश्न नए कोड से अपडेट कर सकते हैं? – Ashe

संबंधित मुद्दे