2013-11-22 10 views
5

MongoDBにドキュメントがあり、PHPで巻き戻そうとしています。私はまだ別のサブ文書を含むサブ文書を持つ文書を巻き戻したいです。文書に文字列と数字だけが含まれていれば、これをうまくやることができましたが、別のサブ文書が含まれていれば、それを動作させることはできません。このエラーが発生します。Mongodbネストされたドキュメントの巻き戻し

exception: $unwind: value at end of field path must be an array 

別のレベルのサブ文書を含むサブ文書を元に戻すことはできませんか?そうでない場合は、どうやってこれをやりますか?

ありがとうございます!

これはクエリです:

$project = array(
       '$project' => array(
        '_id' => 1, 
        'items' => 1, 
       ) 
      ); 

$unwind = array(
       '$unwind' => '$items' 
      ); 


$query = $mongo->store->aggregate($project,$unwind_items); 

は、これは構造体である:

{ 
    "_id": { 
     "$oid": "526fdc1fd6b0a8182300009c" 
    }, 
    "items": [ 
       { 
      "quantity": "1", 
      "category_id": { 
       "$oid": "526fdc1fd6b0a81823000029" 
      }, 
      "category": "test", 
      "images": [ 
       { 
        "name": "9by9easy.PNG", 
        "path": "upload_files/nibh-vulputate-mauris-corporation/", 
        "file_path": "upload_files/nibh-vulputate-mauris-corporation/68e7c50bde1476e96ca2461dc553cce5528fb70e41b1f.PNG", 
        "size": 8761 
       }, 
       { 
        "name": "9by9hard.PNG", 
        "path": "upload_files/nibh-vulputate-mauris-corporation/", 
        "file_path": "upload_files/nibh-vulputate-mauris-corporation/8cd2dcf4fcd476262db2eba3fdb2c39a528fb70e42757.PNG", 
        "size": 11506 
       } 
      ], 
      "link": "fghfhfhfg" 
     } 
    ], 
    "name": "Nibh Vulputate Mauris Corporation", 

} 
+0

PSを動作します。主なポイントは、あなたが巻き戻すことができるとサブ文書を持っているサブ文書 –

答えて

14

私はあなたが何をしようとしていることのMongoDBで可能であることを知っています。 aggregate()コマンドは、必要な数の引数を取ることができます。モンゴシェルで

、この

db.collection.aggregate(
    { $project: { 
    _id: 1, 
    items: 1 
    } }, 
    { $unwind: '$items' }, 
    { $unwind: '$items.images' } 
); 

のようなコマンドがitemsサブドキュメント、そしてimagesサブドキュメントをアンワインドします。

あなたの質問のコードに基づいて、おそらくこれは、複数のアイテムがある

$project = array(
    '$project' => array(
    '_id' => 1, 
    'items' => 1, 
) 
); 

$unwind_items = array(
    '$unwind' => '$items' 
); 

$unwind_images = array(
    '$unwind' => '$items.images' 
); 


$query = $mongo->store->aggregate($project,$unwind_items,$unwind_images); 
関連する問題