MongoDB聚合错误"管道中的每个项目必须是文档"

 mobiledu2502905343 发布于 2023-02-03 10:33

我有一个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阵列把聚集与一个以上的工作时间.如果你离开阵列,操作工作正常.如果你添加它,突然你会得到"管道中的每个项目都必须是文档".

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有