Я хотел бы применить некоторые простые манипуляции со строками при выполнении $project, можно ли применить что-то вроде следующей функции к $project? :
var themeIdFromZipUrl = function(zipUrl){
return zipUrl.match(/.*\/(T\d+)\/.*/)[1]
};
Я использую следующий запрос:
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
и превратить ее в theme_id
? Я немного взглянул на Map-Reduce, но не уверен, что это слишком сложно для такого простого случая.
Спасибо,
Амит.