我注意到我的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问题的解决方法和信息都会有所帮助
答案 0 :(得分:0)
好的,我已经设法找到一个解决方法,只需将该字段添加到分组_id
:
{ "$group" : { "_id" : { time: { "$hour" : "$data.lastVisit" } }, "count" : { "$sum" : 1 } } }
但错误仍然存在,这肯定是一个问题。