ฉันกำลังพยายามค้นหาทักษะทั่วไป (และทั่วไปน้อยที่สุด) ที่จัดเก็บไว้ในฐานข้อมูล mongo ฉันใช้พังพอนเพื่อดึงผลลัพธ์
User
คือเอกสารรูท ซึ่งแต่ละเอกสารมีเอกสาร Profile
อยู่ภายใน โปรไฟล์มีแอตทริบิวต์เป็น 'ทักษะ' ซึ่งประกอบด้วยอาร์เรย์ ProfileSkillEntry
ซึ่งมี title
(ชื่อทักษะ)
return User.aggregate([{
$group: {
'_id': '$profile.skills.title',
'count': {
$sum: 1
}
}
}, {
$sort: {
'count': -1
}
}, {
$limit: 5
}]);
ฉันคาดหวังว่ามันจะรวมทักษะผู้ใช้ที่ลงทะเบียนทั้งหมดเข้าด้วยกัน ค้นหา 5 อันดับแรกที่เกิดขึ้นและส่งคืนสิ่งนั้น ดูเหมือนว่าจะจัดกลุ่มต่อผู้ใช้และให้ผลลัพธ์ที่ไม่ถูกต้อง
ตัวอย่าง User
โครงสร้างเอกสาร:
{
"_id" : ObjectId("..."),
"firstName" : "Harry",
"lastName" : "Potter",
"profile" : {
"_id" : ObjectId("..."),
"skills" : [
{
"_id" : ObjectId("..."),
"title" : "Java",
"description" : "Master",
"dateFrom" : "31/07/2019",
"coreSkill" : true
},
{
"_id" : ObjectId("..."),
"title" : "JavaScript",
"description" : "Proficient",
"dateFrom" : "31/07/2019",
"coreSkill" : false
}
],
}
}