$ project를 할 때 간단한 String 조작을 적용하고 싶습니다. $ project에 다음 함수를 적용 할 수 있습니까?
db.clientRequest.aggregate(
{
$match: {
"l": {$regex: ".*zip"},
"t": { "$gte": new Date('1/SEP/2013'),
"$lte": new Date('7/OCT/2013')
}
}
},
{
$project: {"theme_url" : "$l", "_id": 0, "time": "$t"}
},
{
$group: { _id: {
theme_url: "$theme_url",
day: {
"day": {$dayOfMonth : "$time"},
"month": {$month: "$time"},
"year": {$year: "$time"}
},
},
count: {$sum:1}
}
}
)
이 다음 반환 :
{
"_id" : {
"theme_url" : "content/theme/T70/zip",
"day" : {
"day" : 13,
"month" : 9,
"year" : 2013
}
},
"count" : 2
}
은 내가 theme_url
필드 위의 함수를 적용 할 수 있습니다 : 나는 다음과 같은 쿼리를 사용하고
var themeIdFromZipUrl = function(zipUrl){
return zipUrl.match(/.*\/(T\d+)\/.*/)[1]
};
theme_id
으로 바꾸시겠습니까? Map-Reduce에 대해 조금 훑어 보았습니다. 그러나 그런 쉬운 경우에는 너무 복잡할지 모르겠습니다.
감사합니다.
Amit.
현재이 작업을 직접 수행 할 수있는 지원은 없지만 집계 프레임 워크 (문자열 비교를 위해 문자 비교 작업 포함)를 사용하는 것은 추악한 방법입니다. –