Структура агрегации MongoDB: преобразование одного элемента или пустого массива в число - PullRequest
1 голос
/ 29 апреля 2020

Я хочу знать, какой самый короткий и чистый способ выполнить это преобразование с использованием структуры агрегирования mon go:

{ total: [ { value: 200} ] }

to

{ total: 200 }

и:

{ total: [] }

to

{ total: 0 }

Это total должно быть значением поля value (в массиве всегда будет один) или нулем, если массив total пуст.

1 Ответ

2 голосов
/ 29 апреля 2020

Использование $ arrayElemAt для получения первого элемента массива и $ ifNull для предоставления значения по умолчанию:

db.collection.aggregate([
    {
        $project: {
            total: { $ifNull: [ { $arrayElemAt: [ "$total.value", 0 ] }, 0 ] }
        }
    }
])

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

...