Оператор этапов агрегации MongoDB - $ unwind
Описание
Оператор этапов раскрутки MongoDB $ используется для деконструкции поля массива из входных документов для вывода документа для каждого элемента. Каждый выходной документ является входным документом, в котором значение поля массива заменяется элементом.
Синтаксис:
{$ unwind: <путь к полю>}
Нужно помнить:
- Если значение поля не является массивом, db.collection.aggregate () генерирует ошибку.
- Если указанный путь для поля не существует во входном документе, конвейер игнорирует входной документ и не выводит ничего.
- Если во входном документе массив пуст, конвейер игнорирует входной документ и не выводит ничего.
Образец коллекции test1
{
"_id" : 1,
"shirt" : "Half Sleeve",
"sizes" : [
"medium",
"XL",
"free"
]
}
{ "_id" : 2, "shirt" : "Full Sleeve", "sizes" : [ ] }
Пример: $ unwind
Следующая стадия агрегации $ unwind используется для вывода документа для каждого элемента в массиве размеров.
> db.test1.aggregate( [ { $unwind : "$sizes" } ] );
Выход:
> db.test1.aggregate ([{$ unwind: "size sizes}}]); {"_id": 1, "рубашка": "полурукав", "размеры": "средний"} {"_id": 1, "рубашка": "полурукав", "размеры": "XL"} {"_id": 1, "рубашка": "Половина рукава", "размеры": "бесплатно"}
Здесь из результата видно, что каждый документ идентичен входному документу, за исключением значения поля размеров, которое содержит значение из массива исходных размеров.
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code