2017-06-13 9 views
7

मैं document-centric design में निर्धारित समय श्रृंखला डेटा स्टोर करने के लिए cosmosdb का उपयोग करने के लिए देख रहा था। आधिकारिक mongodb चालक का उपयोग करके मैंने कुछ सरल एकत्रीकरण बयान लिखने की कोशिश की; हालांकि, मुझे यह त्रुटियां मिलीं कि $ अनचाहे और $ समूह समर्थित नहीं थे। यह देखते हुए कि cosmosdb को mongodb के ड्रॉप-इन प्रतिस्थापन के रूप में बताया गया था, क्या मुझे एक चरण याद आया या एकत्रीकरण एक समर्थित सुविधा नहीं है।क्या एज़ूर कॉसमॉस डीबी - मोंगो एपीआई समर्थन एकत्रीकरण

retrieve.Aggregate().Unwind(i => i.Observations).Group(new BsonDocument { 
     {"_id", "$Observations.Success"}, 
     {"avg", new BsonDocument{ 
     {"$avg", "$Observations.Duration"} 
     }} 
    }).ToList(); 
+0

यह देखते हुए कि "नीचे" क्या हो रहा है यह है कि "ड्राइवर" से जारी वायर प्रोटोकॉल को विशिष्ट कॉसमॉस डीबी विधियों के लिए "मैप किया जा रहा है", तो ऐसी विशिष्ट त्रुटियां इंगित करती हैं कि यह समर्थित नहीं है। "सर्च इंजन फू" का एक त्वरित बिट "एसक्यूएल एकत्रीकरण" की अनुमति देने के लिए केवल हालिया जोड़ों को दिखाता है और यह सुझाव देने के लिए कोई दस्तावेज नहीं है कि मोंगोडीबी एकत्रीकरण के लिए कोई समर्थन है। इसलिए जब तक हाल ही में जोड़ा नहीं जाता है, तो मामले को मजबूत करने वाली त्रुटियों के साथ कोई दस्तावेज नहीं होगा "नहीं"। मुझे लगता है कि विशिष्ट त्रुटियां वास्तव में यहां ठोस चीज हैं। –

+0

@NeilLunn मुझे भी संदेह है। मुझे बेवकूफ कहो लेकिन मैं उम्मीद कर रहा था कि मैंने कुछ गलत किया है। – Tedford

+0

@ टेडफोर्ड - एकत्रीकरण पाइपलाइन अब समर्थित है। मेरा संबंधित उत्तर देखें (समर्थित सुविधाओं की प्रकाशित सूची के लिंक के साथ)। –

उत्तर

2

नवंबर 2017 की स्थिति के अनुसार ब्रह्मांड डीबी के MongoDB एपीआई अब, एकत्रीकरण पाइप लाइन का समर्थन करता है पाइपलाइन चरणों अपने मूल में पहचान के सभी सहित प्रश्न ($unwind, $group)।

समर्थित सुविधाओं के विशिष्टता here सूचीबद्ध हैं।

7

@neillunn से टिप्पणी और है कि प्रभावित लगता है कि cosmosdb के लिए एकत्रीकरण कार्यों मोंगो एपीआई के माध्यम से समर्थित नहीं हैं किसी भी दस्तावेज की कमी को देखते हुए। ऐसा लगता है कि intention कुल योग के लिए cosmosdb documentdb API SQL वाक्यविन्यास का उपयोग करना है।

LINQ सिंटेक्स

var client = new DocumentClient(new Uri("https://<account>.documents.azure.com"),<password>); 

    // issue query 
    var documentUri = UriFactory.CreateDocumentCollectionUri("Prod", "retrieve"); 
    var date = "20161011".Dump("Date"); 


    var max = client.CreateDocumentQuery<ObservationDocument>(documentUri) 
      .Where(i => i.Id == date) 
      .SelectMany(i => i.observations) 
      .Max(i => i.Duration); 

SQL सिंटैक्स

// explicit query 
var spec = new SqlQuerySpec("select value count(o.duration) from days d join o in d.observations where d._id = @id"); 
spec.Parameters = new Microsoft.Azure.Documents.SqlParameterCollection(); 
spec.Parameters.Add(new Microsoft.Azure.Documents.SqlParameter("@id", "20161010")); 
client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri("Prod", "retrieve"), spec).Dump("As query"); 
संबंधित मुद्दे