通过 MongoAPI 对 Azure Cosmos DB 进行聚合查询时出现意外错误
Posted
技术标签:
【中文标题】通过 MongoAPI 对 Azure Cosmos DB 进行聚合查询时出现意外错误【英文标题】:Unexpected error with aggregate query to Azure Cosmos DB via MongoAPI 【发布时间】:2018-03-09 08:15:14 【问题描述】:我注意到我的数据库上的聚合查询失败:
"aggregate" : "visitors",
"pipeline" : [
"$match" : "project" : "E2E120AF-AC50-4969-9DA1-CFA1E31D7E17", "data.lastVisit" : "$gt" : ISODate("2018-02-07T17:00:00Z") ,
"$group" : "_id" : "$hour" : "$data.lastVisit" , "count" : "$sum" : 1
]
我从MongoChef
和.Net client
应用程序都尝试了这个,结果我得到了unexpected error
:
"_t" : "OKMongoResponse", "ok" : 0, "code" : 1, "errmsg" : "unexpected error occured while processing the request", "$err" : "unexpected error occured while processing the request"
如果我使用其他日期表达式运算符,例如 $dayOfYear
,它也会失败。如果我在没有任何日期表达式的情况下按data.lastVisit
进行分组,它就可以正常工作。当然,同样的查询在真正的 MongoDB 上也能顺利运行。
visitors
集合中的文档结构如下:
"project" : "E2E120AF-AC50-4969-9DA1-CFA1E31D7E17",
"data" :
"defaultName" : true,
"name" : "...",
"geo" :
...
,
"firstVisit" : ISODate("2018-02-21T09:10:06.464+0000"),
"ip" : "....",
"lastVisit" : ISODate("2018-02-21T09:10:08.582+0000")
,
"_id" : ObjectId("5a8d376ef72db1002b9c591a"),
"sockets" : [
],
"isBlacklisted" : false,
"online" : true
我认为这是 Cosmos DB 实现聚合管道的一个问题,因此任何解决方法和有关如何提交 Cosmos DB 问题的信息都会有所帮助
【问题讨论】:
【参考方案1】:好的,我已经设法找到一种解决方法,即只需将字段添加到分组_id
:
"$group" : "_id" : time: "$hour" : "$data.lastVisit" , "count" : "$sum" : 1
但错误仍然存在,这绝对是一个问题。
【讨论】:
以上是关于通过 MongoAPI 对 Azure Cosmos DB 进行聚合查询时出现意外错误的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集“System.Net.Http.Formatting-Cosmo”
通过 AzureServiceTokenProvider 对 CloudTableClient 进行 Azure 存储身份验证