MongoDB - 在find函数中过滤

时间:2014-12-08 22:18:25

标签: mongodb

我在mongo db中编写查询。我想知道如何在find函数中使用substring函数,比如我有一个日期字符串。我希望逐年过滤日期,然后逐月过滤。 这就是我的尝试:

db.booking.find({$substr:["$bookingdatetime",5,2]:"14"}).aggregate([     {$group: {         _id: {$substr: ['$bookingdatetime', 5, 2]},          numberofbookings: {$sum: 1}     }} ])

我哪里错了?

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将日期模式与特定年份相匹配。