sql >> データベース >  >> NoSQL >> MongoDB

Mongodbはネストされたドキュメントをほどきます

    あなたがやろうとしていることはMongoDBで可能であることを私は知っています。 aggregate() コマンドは必要な数の引数を取ることができます。

    mongoシェルでは、次のようなコマンド

    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);
    



    1. Mongooseでの並べ替えの最後にnull値を保持するにはどうすればよいですか?

    2. フィルタされた配列アイテムだけでMongoDBのオブジェクトを取得する必要があります

    3. nodejsからmongodbにオブジェクトの大きな配列を挿入する

    4. MongoDB C#シリアライザーを使用して値型をどのようにシリアル化しますか?