mongodb $unwind -- Что это такое. Разворачивание вложенных массивов
Primary tabs
При агрегации данных $unwind позволяем развернуть поля-подмассивы путём дублирования в выборке родительской сущности для каждого поля такого подмассива.
Пример
Пускай у нас есть следующая база людей:
db.test.insert({name: "Ivan", likes: ["Maria", "Anna"]}); db.test.insert({name: "Serge", likes: ["Anna"]});
Пусть поле likes означает какие девочки нравятся какому мальчику. Применим оператор $unwind:
db.test.aggregate({$unwind: "$likes"}); { "result" : [ { "_id" : ObjectId("4f598de76a8f8bc74573e9fd"), "name" : "Ivan", "likes" : "Maria" }, { "_id" : ObjectId("4f598de76a8f8bc74573e9fd"), "name" : "Ivan", "likes" : "Anna" }, { "_id" : ObjectId("4f598e086a8f8bc74573e9fe"), "name" : "Serge", "likes" : "Anna" } ], "ok" : 1 }
-- видим что массив likes развернулся и каждый документ теперь имеет поле likes с каждым значением массива, которые он имел до этого. Если мы хотим найти самую популярную девочку достаточно сгруппировать выборку по полю likes. Для группировки служит следующий оператор.
Если речь идёт о массиве объектов
Если речь идёт о массиве объектов, то для каждой развернутой строки под именем подмассива будет находится один вложенный объект.
Источник:
https://habrahabr.ru/post/139643/
- Log in to post comments
- 5767 reads