मुझे नहीं पता कि क्यों, लेकिन अगर मैं $set
विधि का उपयोग कर मौजूदा फ़ील्ड को अपडेट करने का प्रयास करता हूं, तो मौजूदा फ़ील्ड को उसी संदर्भ में बदल दिया जाता है।मौजूदा फ़ील्ड को हटाने या ओवरराइड किए बिना उल्का संग्रह अपडेट करें
। मान लें कि मेरे पास निम्नलिखित फ़ील्ड के साथ एक मौजूदा संग्रह है। संग्रह की
नाम: Ticket
{profile: {name: "Test", placement: 1}, requestor: _id}
जब मैं इस तरह इस संग्रह के लिए/अद्यतन क्षेत्रों जोड़ने का प्रयास:
var ticket = Meteor.tickets.findOne({_id: ticketID});
if(ticket){
Meteor.users.update(ticket, {
$set: profile: {name: "Test2", new_fields: "value"}
});
}
संग्रह अद्यतन हो जाता है और नाम क्षेत्र में परिवर्तन लेकिन प्लेसमेंट निकाल दिया जाता है और अब वहाँ नहीं है। यह भी सच है अगर मैं name
फ़ील्ड को हटा देता हूं। हम एक ही संरचना को पार करने के बिना एक उल्का संग्रह को सही ढंग से कैसे अपडेट करते हैं?
$set: {"profile.name": "Test2", "profile.new_fields": "value"}
यानी:
जैसे ही आप इसे पोस्ट कर रहे थे, मुझे यह मिला। http://stackoverflow.com/questions/10290621/how-do-i-partially-update-an-object-in-mongodb-so-the-new-object-will-overlay। कुछ मिनटों में स्वीकार करेंगे। धन्यवाद – Warz