2014-12-08 4 views
0

Я пишу запрос в mongo db. Я хочу знать, как использовать функцию подстроки в функции find, например, у меня есть строка даты. Я хочу отфильтровать дату за годом, а затем группировать по месяцам. Это то, что я пробовал:MongoDB - фильтр в функции поиска

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

Где я буду неправильно?

+0

'$ substr' - оператор агрегации. Вы не можете использовать его в инструкции 'find()'. – BatScream

+0

Итак, что мне делать в этом сценарии? – user1584253

ответ

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, чтобы соответствовать шаблону даты с определенным годом.

+0

Год зависит от даты, я не могу ее жестко записать. – user1584253

Смежные вопросы