Агрегирование фасетов с помощью PHP-библиотеки MongoDB

Можно ли выполнить фасетную агрегацию с PHP-библиотека mongodb?

Как описано в документации Структура агрегации Монгодба, можно использовать суб-конвейеры, используя граненый поиск, например:

db.artwork.aggregate( [
{
$facet: {
"categorizedByTags": [
{ $unwind: "$tags" },
{ $sortByCount: "$tags" }
],
"categorizedByPrice": [
// Filter out documents without a price e.g., _id: 7
{ $match: { price: { $exists: 1 } } },
{
$bucket: {
groupBy: "$price",
boundaries: [  0, 150, 200, 300, 400 ],
default: "Other",
output: {
"count": { $sum: 1 },
"titles": { $push: "$title" }
}
}
}
],
"categorizedByYears(Auto)": [
{
$bucketAuto: {
groupBy: "$year",
buckets: 4
}
}
]
}
}
])

Тем не менее, похоже, нет способа сделать это в PHP. Я пробовал следующее:

$cursor = $collection->aggregate([
[
'$facet' => [
'categorizedByTags' => [
'$unwind' => '$tags',
'$sort' => '$tags'
]
]
]
]);

Который выбрасывает следующее исключение:

аргументами $ facet должны быть массивы, categoryorByTags — тип объекта

Кажется, что драйвер MongoDB обрабатывает конвейер определенным образом, делая невозможным выполнение фасетных агрегаций.

Есть ли способ сделать эту работу?

Решение благодаря Veeram

$cursor = $collection->aggregate([
[
'$facet' => [
'categorizedByTags' => [
['$unwind' => '$tags'],
['$sort' => '$tags']
]
]
]
]);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]