2016-03-17 7 views
9

में एकाधिक दस्तावेज़ (थोक) अपलोड करने के लिए कैसे मेरे पास दस्तावेज़ सूची (ऑब्जेक्ट) है जिसमें ऑब्जेक्ट में कई दस्तावेज़ हैं यानी जेसन रिकॉर्ड मौजूद हैं, लेकिन जब मैं दस्तावेज (रिकॉर्ड्स) के उस बंच को अपलोड करने का प्रयास करता हूं तो यह दस्तावेज़ डीबी पर अपलोड नहीं होता है लेकिन जब मैं एकल दस्तावेज़ रिकॉर्ड अपलोड करता हूं तो यह सफलतापूर्वक अपलोड करता है।दस्तावेज़ डीबी

List<MyModelClass> listObj = new List<MyModelClass>(); 
    Document doc = await DocumentClient.CreateDocumentAsync("dbs/" + DocumentDatabase.Id + "/colls/" + DocumentCollection.Id, listObj); 
कोड ऊपर

काम नहीं कर रहा .....

foreach (var item in listObj) 
    { 
     Document doc = await Client.CreateDocumentAsync("dbs/" + DocumentDatabase.Id + "/colls/" + DocumentCollection.Id, item); 
    } 

इस कोड मेरे लिए काम कर रहा है .....

Syntax : CreateDocumentAsync(String, Object, RequestOptions, Boolean) 
Object :- Document object // I Know it as per syntax it need to be "Document Type". 

मैं सभी अपलोड करने के लिए कोई अन्य तरीका चाहते हैं एक बार दस्तावेज़ ....

उत्तर

12

आप एक समय में एक से अधिक दस्तावेज़ सम्मिलित नहीं कर सकते हैं। CreateDocumentAsync() पर कॉल केवल एक ही दस्तावेज़ के लिए है।

इसे पूरा करने के लिए, आपको इसे पूरा करने के लिए कुछ प्रकार की सर्वर-साइड संग्रहीत प्रक्रिया तैयार करने की आवश्यकता होगी, और उसके बाद एक दस्तावेज़ में फ़ंक्शन में अपना दस्तावेज़ सरणी पास करनी होगी। आप this answer को देख सकते हैं कि किसी और ने सर्वर-साइड फ़ंक्शन का उपयोग करके इसे हल किया है, अनिवार्य रूप से स्थानीय रूप से दस्तावेज़ों की एक सरणी बनाकर, और फिर अपनी संग्रहीत प्रक्रिया में सरणी के माध्यम से चलना। तो, कुछ इस तरह (है कि इसका जवाब से कुछ अंश के रूप में) बनाने:

docObject = { 
    "items": [{doc}, {doc}, {doc}] 
} 

और अपने संग्रहीत प्रक्रिया के लिए docObject गुजर।

आखिरकार, आपकी संग्रहीत प्रक्रिया अभी भी व्यक्तिगत दस्तावेज कॉल कर रही है, प्रति दस्तावेज़ एक। लेकिन ... आपके पास एकाधिक नेटवर्क राउंड-ट्रिप नहीं होंगे। और आवेषण लेनदेन होगा (अगर आवेषण में से एक विफल रहा है, या आपने अपवाद फेंक दिया है, तो अन्य आवेषण वापस लुढ़क जाएंगे)।

+0

@ डेविड के उत्तर के अनुसार, यहां एक थोक आयात संग्रहीत प्रक्रिया का नमूना है - https://github.com/Azure/azure-documentdb-js-server/blob/master/samples/stored-procedures/BulkImport.js –

+0

धन्यवाद , डेविड और रयान, आपका जवाब वास्तव में मेरे लिए सहायक है। –

+0

हे मुझे "ExecuteStoredProcedureAsync" विधि निष्पादित करने के लिए समस्या हो रही है, मेरे निष्पादन सूचक "ExecuteStoredProcedureAsync" विधि पर जाता है और फिर कुछ भी नहीं हो सकता है, अपवाद नहीं ... –

-6

मुझे लगता है कि आप DocumentClient.CreateDocumentCollectionAsync विधि की तलाश कर रहे हैं।

+3

'CreateDocumentCollectionAsync()' _collections_ बनाने के लिए है, दस्तावेज़ों के समूह नहीं। –

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