我正在尝试汇总给定年份的月份和年份的销售总额。因此,我会遵循文档以及其他人使用此代码所做的事情:
`db.sales.aggregate([{$project: {year: {$year: "saleDate"}, month: {$month: "saleDate"}, dayOfMonth:
{$dayOfMonth: "saleDate"}}}, {$group: {_id: {year: '$year', month: '$month'},
count: {$sum: 1}}}]);
但是它返回错误:
"errmsg" : "can't convert from BSON type string to Date"
我不明白为什么指南针中的模式说它是“日期”类型。
我尝试使用'new Date'函数完成的另一种方式,但没有错误但没有结果。.我不知道如何在mongo中处理日期
`db.sales.aggregate([{$match: {'saleDate': {$gte: {$dayOfYear: new Date("2017-06-01")},
$lt: {$dayOfYear: new Date("2017-07-01")}}}},
{$group: {_id: { 'numberofSales': {$sum: 1}}}}])
答案 0 :(得分:1)
第一个查询的问题是您缺少美元符号,MongoDB认为saleDate
是硬编码的字符串,而不是$saleDate
字段参考,请尝试:
db.sales.aggregate([{$project: {year: {$year: "$saleDate"}, month: {$month: "$saleDate"}, dayOfMonth:
{$dayOfMonth: "$saleDate"}}}, {$group: {_id: {year: '$year', month: '$month'},
count: {$sum: 1}}}]);
更多here
您的第二个查询将不起作用,因为您正尝试将$dayOfYear返回的数字与日期字段进行比较。