Я работаю над анализом данных CV большой коллекции mongoDB.Я пытаюсь посчитать абсолютную частоту слов в названии вакансии (поле jobs.jobTitle в схеме ниже).
Документы структурированы следующим образом:
{
firstName: String,
lastName: String,
jobs: [{jobTitle: 'software architect', company: String, ...}, {jobTitle: 'full stack software engineer', company: String, ...}, {jobTitle: 'javascript developer', company: String, ...}],
...
}
Я хотел бы перебрать всю коллекцию и получить такой результат:
[{word: 'manager', count: 3245},{word: 'engineer', count: 3102}, {word: 'software', count: 3021}, ..]
Я попробовалследующая агрегация:
db.cvs.aggregate([
{
$project: {
words: { $split: ["$jobs.jobTitle", " "] }
}
},
{
$unwind: {
path: "$words"
}
},
{
$group: {
_id: "$words",
count: { $sum: 1 }
}
},
{ $sort: { "count": -1 } }
])
Что приводит к следующему сообщению об ошибке:
$split requires an expression that evaluates to a string as a first argument, found: array
Могу ли я сначала объединить строковые значения jobs.jobTitle в строку, используя агрегацию?Или есть другой способ достичь ожидаемого результата?