Заменить значение в массиве после сортировки

До 3.2.6 Mongodb не поддерживает запрос соединения как mysql. ниже решения, которое работает для вас.

 db.getCollection('comments').aggregate([
        {$match : {pid : 444}},
        {$lookup: {from: "users",localField: "uid",foreignField: "uid",as: "userData"}},
   ])
0
задан SkroS 17 January 2019 в 14:12
поделиться

3 ответа

В основном с вашим кодом вы 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)

0
ответ дан Prince Hernandez 17 January 2019 в 14:12
поделиться
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

0
ответ дан koλzar 17 January 2019 в 14:12
поделиться

использовать значения объекта для извлечения значений объекта, отсортировать их затем использовать уменьшить , чтобы восстановить объект:

[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);

0
ответ дан G.aziz 17 January 2019 в 14:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: