【问题标题】:Mongodb $unwind says it did not expect an arrayMongodb $unwind 说它没想到一个数组
【发布时间】:2016-09-05 23:40:27
【问题描述】:

我正在使用 PHP 构建基于 MongoDB 的应用程序。 我有一个名为“parameters”的集合,它的文档除其他外还有一个名为“included”的数组,其中包含对象。

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

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

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

PHP 致命错误:未捕获的异常“MongoResultException”与 消息 'localhost:27017: 期望字符串或对象为 $unwind 阶段的规范,得到了 Array'

参数文件:

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

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

【问题讨论】:

    标签: php mongodb


    【解决方案1】:

    为可能遇到此问题的其他人发布答案,犯了同样的错误。 问题在于将“$included”值作为数组发送。 应该是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-20
      • 2017-10-03
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      相关资源
      最近更新 更多