У меня есть следующие записи:MongoDB: любой способ использовать определенную пользователем функцию в агрегации?
{ "_id" : ObjectId("55889370ba09474fd178d8b8"), "url" : "http://stackoverflow.com/questions/ask"}
{ "_id" : ObjectId("55889370ba09474fd178d8b4"), "url" : "http://stackoverflow.com"}
{ "_id" : ObjectId("55889370ba09474fd178d8b2"), "url" : "http://espn.com"}
И я хочу сделать агрегацию, чтобы получить количество каждого сайта по своему корню. В принципе, я хочу, чтобы обе первые две записи попадали под одну и ту же группу (они имеют один и тот же корень).
Я создал функцию, определенную пользователем, чтобы преобразовать url в свой корень. Моя идея состояла в том, чтобы использовать определенную пользователем функцию для первого проекта записи (изменение поля url), а затем группировки по URL-адресу. Проблема в том, что явно определенные пользователем функции не могут использоваться в агрегатах. Они могут использоваться в тех случаях, когда предложения в проекции, но прогнозы, где клаузулы не могут использоваться в агрегации.
Есть ли способ, которым я могу агрегировать, в котором я нуждаюсь?
EDIT:
Может быть сделать пример нагляднее я должен добавить, что если я, например, хотел группе корневым веб-сайт и сосчитать их я хотел бы получить что-то вроде:
{ "_id" : "http://stackoverflow.com", "count" : 2}
{ "_id" : "http://espn.com", "count" : 1}
Вы в основном ищете ** '$ project' ** фильтр, используя **' $ regex' **, но в настоящее время структура агрегации не имеет этой функции, здесь есть открытая JIRA [* * SERVER-11947 **] (https://jira.mongodb.org/Просмотр/SERVER-11947). – chridam
Значит, нет способа сделать это сейчас? Нет другой альтернативы? –
Не подходит ли это http://stackoverflow.com/a/16252753/4573999? –