Состояние в агрегации mongodb - PullRequest
1 голос
/ 07 февраля 2020

Я новичок в Mongodb и пытаюсь научиться агрегации. Моя база данных выглядит так:

{
  _id : 1,
  a: 5,
  b: 6,
  c : {
    ca: 3
    cb: 5
}
},
{
  _id : 1,
  a: 3,
  b: 4,
  c : {
    ca: 3
    cb: 7
}
}

Есть ли что-нибудь, чтобы: - Первый: найти максимум в c - Второй: создать новый объект, подобный этому:

{
   a : [ 5, 3],
   b : [6, 4],
   c : [5, 7]
}

Мои извинения если это повторяющийся вопрос, но я не смог найти аналогичный.

1 Ответ

0 голосов
/ 07 февраля 2020

Попробуйте,

db.collection.aggregate([
  {
    $addFields: {
      c: {
        $objectToArray: "$c"
      }
    }
  },
  {
    $group: {
      _id: null,
      a: {
        $push: "$a"
      },
      b: {
        $push: "$b"
      },
      c: {
        $push: {
          $max: "$c.v"
        }
      }
    }
  }
])

Пн go Детская площадка

...