Страницы

воскресенье, 6 ноября 2016 г.

MongoDB Linked List

На этой неделе появилась версия MongoDB 3.4.0 Release Candidate 2 с кучей вкусняшек на борту, которые хочется попробовать уже сейчас. Предлагаю провести дегустацию одного из самых вкусных блюд предстоящего релиза - пайпа по имени $graphLookup - с помощью которого можно выполнять поиск по коллекции рекурсивно. Напишем запрос к коллекции, документы которой имплементируют связный список. Реализация подобной структуры в текущем стабильном релизе на мой взгляд вообще не вариант, и я рад что уже совсем скоро смогу рассчитывать на нее в процессе проектирования.

Инициализируем:

Начнем с начала:

Реверсим массив используя новый оператор $reverseArray, после чего миксуем его с первым документом:

Развинчиваем массив:

Вытаскиваем содержимое поля "items" с помощью еще одного нового пайпа по имени $replaceRoot:

Easy peasy.

В чем профит? Можно недорого перемещать элементы списка:

Благодаря $graphLookup можно отдавать список частями: