私はPHPでMongoDBに基づいてアプリケーションを構築しています。 私は、そのドキュメントが持っている "parameters"というコレクションを持っています。とりわけ、オブジェクトを含む "included"という配列があります。
"parameters"ドキュメント(変数$ gidの値に基づいて)にアクセスする集約コマンドを実行しようとしており、各 "included"配列要素をそれ自身のドキュメントに変換しようとしています。目標は集約パイプのさらなるステップを実行することですが、私が持っている問題は$ 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
}
],
}
、それは別のシナリオでは正常に動作します(異なるコレクション/文書が、同じ - 文書の配列)。何らかの理由で、今問題が発生しています。どんな助けもありがとう。