对于学校作业,我必须执行几个与销售相关的特定问题及其详细信息的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”,聚合就成功了,我也不知道为什么它会这样。
谢谢。
答案 0 :(得分:0)
错误显示您对字符串类型使用MongoDB日期运算符(在这种情况下为$month
和$year
)。进行db.salesdetails.findOne()
并发布结果。我相信您在 OrderDate 字段中有一个字符串值而不是日期(ISODate(...))
我已经在Compass和Robo 3T上都验证过,如果数据类型正确,汇总管道就可以工作。>