簡體   English   中英

Azure Cosmos DB - Mongo API是否支持聚合

[英]Does Azure Cosmos DB - Mongo API support aggregation

我希望使用cosmosdb來存儲以文檔為中心的設計中布置的時間序列數據。 使用官方的mongodb驅動程序,我試着寫一些簡單的聚合語句; 但是,我收到的錯誤表明$ unwind和$ group不受支持。 鑒於cosmosdb被吹捧為mongodb的替代品,我錯過了一個步驟,或者聚合不是支持的功能。

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

鑒於來自@neillunn的評論以及缺乏任何關於這種影響的文檔似乎沒有通過mongo API支持cosmosdb的聚合函數。 看來, 目的是使用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");

截至2017年11月,Cosmos DB的MongoDB API現在支持聚合管道,包括原始問題中確定的所有管道階段( $unwind$group )。

此處列出了支持功能的細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM