通过MongoAPI对Azure Cosmos DB进行聚合查询时出现意外错误

时间:2018-03-09 08:15:14

标签: azure aggregation-framework azure-cosmosdb

我注意到我的db上的聚合查询失败了:

{ 
  "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 个答案:

答案 0 :(得分:0)

好的,我已经设法找到一个解决方法,只需将该字段添加到分组_id

{ "$group" : { "_id" : { time: { "$hour" : "$data.lastVisit" } }, "count" : { "$sum" : 1 } } }

但错误仍然存​​在,这肯定是一个问题。