Azure Cosmos DB - Mongo API 是否支持聚合
Does Azure Cosmos DB - Mongo API support aggregation
我一直在寻找使用 cosmosdb 来存储 document-centric design 中布局的时间序列数据。使用官方 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 的聚合函数。 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");
截至 2017 年 11 月,Cosmos DB 的 MongoDB API 现在支持聚合管道,包括您在原始问题中确定的所有管道阶段($unwind
、$group
).
列出了支持的功能的细节 here。
我一直在寻找使用 cosmosdb 来存储 document-centric design 中布局的时间序列数据。使用官方 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 的聚合函数。 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");
截至 2017 年 11 月,Cosmos DB 的 MongoDB API 现在支持聚合管道,包括您在原始问题中确定的所有管道阶段($unwind
、$group
).
列出了支持的功能的细节 here。