До 3.2.6 Mongodb не поддерживает запрос соединения как mysql. ниже решения, которое работает для вас.
db.getCollection('comments').aggregate([
{$match : {pid : 444}},
{$lookup: {from: "users",localField: "uid",foreignField: "uid",as: "userData"}},
])
В основном с вашим кодом вы Array
не являетесь другим объектом, поэтому вам нужно воссоздать объект из вашего отсортированного массива. Это может быть сделано с помощью функции Reduce для каждой или любой функции зацикливания. Я думаю, что сокращение легче увидеть.
здесь вы используете what you get
и возвращаете what you want
const yourResult = [
{
"id": "fbl@be-activ-it.fr-Quiz-10",
"user_id": "fbl@be-activ-it.fr",
"myposition": 2,
"points": 38
},
{
"id": "ddd@be-activ-it.fr-Quiz-10",
"user_id": "ddd@be-activ-it.fr",
"myposition": 3,
"points": 37
},
{
"id": "dev@be-activ-it.fr-Quiz-10",
"user_id": "dev@be-activ-it.fr",
"myposition": 1,
"points": 35
}
]
const whatYouWant = yourResult.reduce((a, c, i) => {
c['myposition'] = i + 1;
a[c.id] = c;
return a;
}, {})
console.log(whatYouWant)
const comparePoints = (a,b)=>{
let a_points = a["points"]
let b_points = b["points"]
return a_points-b_points
}
Вместо б-а попробуйте а-б. Посетите: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
использовать значения объекта для извлечения значений объекта, отсортировать их затем использовать уменьшить , чтобы восстановить объект:
[114 ]
const json = {
"dev@be-activ-it.fr-Quiz-10": {
"id": "dev@be-activ-it.fr-Quiz-10",
"user_id": "dev@be-activ-it.fr",
"myposition": 2,
"points": 35
},
"fbl@be-activ-it.fr-Quiz-10": {
"id": "fbl@be-activ-it.fr-Quiz-10",
"user_id": "fbl@be-activ-it.fr",
"myposition": 1,
"points": 38
},
"ddd@be-activ-it.fr-Quiz-10": {
"id": "ddd@be-activ-it.fr-Quiz-10",
"user_id": "ddd@be-activ-it.fr",
"myposition": 3,
"points": 37
}
};
const result = Object.values(json).sort((a, b) => a.myposition - b.myposition).reduce((all, curr) => {
all[curr.id] = curr;
return all;
}, {});
console.log(result);