MongoDB的聚合功能出现问题,导致错误信息不明白为什么

时间:2019-01-10 16:42:02

标签: javascript mongodb aggregation-framework non-relational-database

对于学校作业,我必须执行几个与销售相关的特定问题及其详细信息的MongoDB查询。我现在遇到了一个以前从未遇到过的问题,而且完全不熟悉Mongo也无济于事。

我一直在使用Robo 3t来帮助我完成任务,但是尝试了多种解决方案后,我却一无所获。我似乎也找不到在线问题,因此我在这里问。 因此,代码如下:

db.salesdetails.aggregate(
[   
    {
        $project: {
            month: { $month: "$OrderDate" },
            year: { $year: "$OrderDate" },
            store:{$toInt:"$Store"},
            ReceiptID:1,
            _id:0
        }
    },
    {
        $match: {

            month: 05, 
            year: 2011,
            store:1046

        }
    }
])

预期的输出将是Store(属于指定的整数),月,年和收据的ID,它们属于特定的时间范围和商店。 但是,没有返回它,而是出现以下错误:

https://i.imgur.com/NIYnelc.png

一旦我删除了match字段上的“ store:1046”,聚合就成功了,我也不知道为什么它会这样。

谢谢。

1 个答案:

答案 0 :(得分:0)

错误显示您对字符串类型使用MongoDB日期运算符(在这种情况下为$month$year)。进行db.salesdetails.findOne()并发布结果。我相信您在 OrderDate 字段中有一个字符串值而不是日期(ISODate(...))我已经在Compass和Robo 3T上都验证过,如果数据类型正确,汇总管道就可以工作。