2014-12-08 3 views
0

mongo db에 쿼리를 쓰고 있습니다. 나는 날짜 문자열을 가지고있는 것처럼 find 함수에서 substring 함수를 어떻게 사용하는지 알고 싶다. 나는 년별로 필터링하고 월별로 그룹화하려고합니다. 이것은 내가 시도한 것입니다.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