我在mongo db中编写查询。我想知道如何在find函数中使用substring函数,比如我有一个日期字符串。我希望逐年过滤日期,然后逐月过滤。 这就是我的尝试:
db.booking.find({$substr:["$bookingdatetime",5,2]:"14"}).aggregate([ {$group: { _id: {$substr: ['$bookingdatetime', 5, 2]}, numberofbookings: {$sum: 1} }} ])
我哪里错了?
答案 0 :(得分:1)
$substr只能用作字符串聚合操作。您不能在查找查询中将其用作运算符。您可以按如下方式构建聚合管道:
db.booking.aggregate([
{$project:{"year":{$substr:["$bookingdatetime",5,2]},
"numberofbookings":1,
"bookingdatetime":1}},
{$match:{"year":14}},
{$group:{"_id":{$substr: ['$bookingdatetime', 5, 2]},
numberofbookings: {$sum: 1}}}
])
,或者
使用regex将日期模式与特定年份相匹配。