Я хочу получить взаимное (так что из всех пользователей пользователь, у которого у меня больше всего подписчиков, с (мы оба подписаны на одного и того же пользователя), отсортирован по этому количеству). подписчики из моей схемы базы данных (mongoDB) с функцией агрегирования.
пользовательская схема:
let User = new mongoose.Schema({
uid: {
type: String,
require: true,
unique: true
},
followers: [String],
following: [String]
})
, где последователи / подписчики - это массив UID
, которые я пробовал это:
let me = await User.findOne({uid: uid})
if (me) {
console.log(me.followers)
let mutual = await User.aggregate([
// Match documents that contain the elements
{ "$match": {
"followers": { "$in": me.followers }
}},
// // De-normalize the array field content
{ "$unwind": "$followers" },
// Match just the elements you want
{ "$match": {
"followers": { "$in": me.followers }
}},
// Count by the element as a key
{ "$group": {
"_id": "$name",
"mutual": { "$sum": 1}
}}
])
if (mutual) {
console.log('mutual', mutual)
}
}
но это не дает правильный счет