Mongodb $ unwind说它没想到阵列

时间:2016-09-05 15:01:23

标签: php mongodb

我正在使用PHP构建基于MongoDB的应用程序。 我有一个名为"参数"其中包含一个名为"包含"的数组。其中包含对象。

我正在尝试执行一个聚合命令来访问"参数"文档(基于变量$ gid中的值)并转换每个"包含"数组元素进入自己的文档。目标是在聚合管道中执行进一步的步骤,但由于我遇到的问题是$ unwind,为了清楚起见,我没有将这些添加到这里。

$results = $collection->aggregate(array(
        array('$match' => array('_id' => new MongoId($gid))),
        array('$project' => array('included' => 1)),
        array('$unwind' => array('$included'))
    ));

这适用于应用程序中的另一个类似案例,由于某种原因,在这种情况下,我收到错误。

  

PHP致命错误:未捕获的异常' MongoResultException'同   message' localhost:27017:预期字符串或对象为   $ unwind stage的规范,得到了Array'

参数文件:

db.parameters.findOne()
{
    "_id" : ObjectId("57cd573a216985ced0c66bd2"),
    "name" : "Domains",
    "keywords" : [ ],
    "included" : [
        {
            "instance_id" : ObjectId("57cb2ffd216985ced0c66bcb"),
            "category" : null
        }
    ],
}

如上所述,它在另一个场景(不同的集合/文档,但相同 - 一组文档)中工作正常。出于某种原因,它现在给我带来了麻烦。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

为可能遇到此问题的其他人发布答案,我犯了同样的错误。 问题在于发送包含的' $ && 39;值作为数组。 应该是:

array('$unwind' => '$included')