2011-12-02 5 views
13

मैं एक उप सरणी डालने को समझ नहीं सकता है ...सरणी में एक नया आइटम जोड़ने के लिए मैं mongodb दस्तावेज़ को कैसे अपडेट कर सकता हूं?

  • _ id
  • myArray
  • --Item
  • ---- ArrayItemId
  • ---- नाम

मैं myArray करने के लिए आइटम सम्मिलित करना चाहते हैं ...

मेरा अपडेट दस्तावेज़ कैसे होना चाहिए?

MyCollection.Update( 
new QueryDocument { { "_id", MyObject.Id } }, 
new UpdateDocument { { "$set", new BsonDocument { { "MyArray", 
     new BsonArray { new BsonDocument {{ "ArrayItemId", myArrayField.Id }}, 
         new BsonDocument {{ "Name", myArrayField.Name }} }}}}}, 
UpdateFlags.None); 

उत्तर

14

एक सरणी में सम्मिलित करना $push ऑपरेटर का उपयोग किया जाता है।

एक साइड नोट के रूप में, आपको QueryDocument और UpdateDocument का उपयोग करने की आवश्यकता नहीं है। जबकि Push केवल इस तरह के प्रकार है कि MongoDB में एक साधारण क्षेत्र द्वारा दर्शाया जा सकता स्वीकार करता है,

MyCollection.Update(Query.EQ("_id", MyObject.Id), 
        Update.PushWrapped("MyArray", myArrayField) 

ध्यान दें कि PushWrapped<T> दस्तावेजों पुश करने के लिए अनुमति देता है: वहाँ एक बहुत आसान सहायक वाक्य रचना है।

+0

धन्यवाद। लेकिन Update.PushWrapped के लिए मुझे क्या संदर्भ देना चाहिए ... Intellicense इसे नहीं देख रहा है ... – Serdar

+2

मुझे लगता है कि यह अब है ... नया अपडेटबिल्डर()। नए संस्करण में पुश – Serdar

9

नई MongoDB C# async एडाप्टर के लिए सिंटेक्स:

var filter = Builders<myObject> 
      .Filter.Eq(e => e.Name, "name"); 

var update = Builders<myObject>.Update 
     .Push<String>(e => e.MyArray, myArrayField); 

await collection.FindOneAndUpdateAsync(filter, update); 
संबंधित मुद्दे