Я создаю приложение на основе MongoDB с PHP. У меня есть коллекция под названием «параметры», в которой у ее документов есть, помимо прочего, массив с именем «включено», который содержит объекты.
Я пытаюсь выполнить команду агрегата, которая будет обращаться к документу «параметров» (на основе значения в переменной $ gid) и превратить каждый элемент массива «включено» в свой собственный документ. Цель состоит в том, чтобы выполнить дополнительные шаги в совокупной трубе, но поскольку проблема у меня есть с $ unwind, я не добавляю их сюда для ясности.
$results = $collection->aggregate(array(
array('$match' => array('_id' => new MongoId($gid))),
array('$project' => array('included' => 1)),
array('$unwind' => array('$included'))
));
Это работает в другом аналогичном случае в приложении, по некоторым причинам в этом случае я получаю ошибки.
PHP Fatal error: Uncaught exception 'MongoResultException' with message 'localhost:27017: expected either a string or an object as specification for $unwind stage, got Array'
Параметры документа:
db.parameters.findOne()
{
"_id" : ObjectId("57cd573a216985ced0c66bd2"),
"name" : "Domains",
"keywords" : [ ],
"included" : [
{
"instance_id" : ObjectId("57cb2ffd216985ced0c66bcb"),
"category" : null
}
],
}
Как уже отмечалось, он прекрасно работает в другом сценарии (различные сборники/документы, но тот же - массив документов). По какой-то причине это вызывает у меня проблемы. Любая помощь будет оценена по достоинству.