我有一个MongoDB聚合,如下所示:
[ { "$match": [ {"Created": {"$gte": ISODate("2014-01-10T00:00:00Z")}} ] }, { "$group": { "_id": [ {"year": {"$year": "Created"}}, {"month": {"$month": "Created"}}, {"day": {"$dayOfMonth": "Created"}} ], "count": {"$sum": 1} } } ]
当我在MongoVUE中运行此查询时,它返回以下错误:
Incorrect syntax in pipeline Each item in the pipeline must be a document Type: System.Exception Stack: at MangoUI.ComAggregate.kRemove_Click(Object sender, EventArgs e)
我完全被难倒了,从我的谷歌搜索中,其余的整个互联网也是如此.在我添加创建日期$ match运算符之前,查询工作正常.错误可能属于MongoVUE而不是MongoDB本身.
架构的相关部分如下所示:
{ "_id" : new BinData(3, "m13wFpp9gUi09cRCuG43aw=="), "Created" : ISODate("2013-12-19T01:00:20.972Z") }
任何人都可以帮我找到这个错误的原因吗?我担心我完全被难倒了.
我不被允许回答我自己的问题(因为如果你的StackOverflow信誉太低,显然完全不可能在8小时内找到答案吗?嗯?)所以我发布以下答案:
好的,我找到了答案,据我所知,它确实是MongoVUE中的一个错误(或者至少是一个遗漏和误导性的错误消息).以这种方式编写相同的查询(使用orid的修改)可以:
{ "$match": { "Created": { "$gte": ISODate("2014-01-10T00:00:00Z") } } }, { "$group": { "_id": { "year": { "$year": "$Created" }, "month": { "$month": "$Created" }, "day": { "$dayOfMonth": "$Created" } }, "count": { "$sum": 1 } } }
(注意我真正做的唯一改变是删除它周围的数组标记.)
此外,该错误出现任何你在MongoVUE阵列把聚集与一个以上的工作时间.如果你离开阵列,操作工作正常.如果你添加它,突然你会得到"管道中的每个项目都必须是文档".