Cảm ơn tất cả những gì đã cố gắng giúp đỡ tôi. Tôi đánh giá cao sự giúp đỡ của bạn.
Tôi đã tìm ra giải pháp thông qua đường dẫn tổng hợp.
var myArray = ['a', 'b', 'c'];
db.test.aggregate([
{
$unwind: '$chars',
},
{
$match: { chars: { $in: myArray } },
},
{
$group: {
_id: '$_id',
count: { $sum: 1 },
},
},
{
$project: {
_id: 1,
count: 1,
score: { $divide: ['$count', myArray.length] },
},
},
{
$sort: { score: -1 },
},
]);
Đây là những gì mà bảng điều khiển trả lại:
{ "_id" : ObjectId("586ebeacb2ec9fc7fef5ce31"), "count" : 3, "score" : 1 }
{ "_id" : ObjectId("586ebeb9b2ec9fc7fef5ce32"), "count" : 2, "score" : 0.6666666666666666 }
{ "_id" : ObjectId("586ebe89b2ec9fc7fef5ce2f"), "count" : 1, "score" : 0.3333333333333333 }
Hy vọng ai đó thấy điều này hữu ích.