1

iは、クエリしている:マングースプロジェクトとクエリとフィルタ

Model.aggregate([{ 
     $lookup: { 
      from: 'translations', 
      localField: '_id', 
      foreignField: 'item_id', 
      as: 'translation' 
     }, 
    }, { 
     $project: { 
      "label": "$label", 
      "items": "$items", 
      "translation": { 
       "$filter": { 
        "input": "$translation", 
        "as": "page", 
        "cond": { 
         "$eq": ["$$page.lang_key", lang] 
        } 
       } 
      } 
     } 
    }]) 

そして結果:フィールドtranslation配列は

[ { _id: 58b2ca5b9ac42bac7aaed48a, 
    label: 'Main', 
    items: [ [Object] ], 
    translation: [ [Object] ] } ] 

どのように作るためではなかったということ?あなただけの配列内の1つの要素を受けるので、私は常に、アレイ内の唯一の一つの要素...

答えて

1

を受けるので 、あなたは$unwindまたは$arrayElemAtが配列をフラット化し、サブドキュメントを生成するために使用することができます。後者については、次のようなものがあなたのために働くはずです。

Model.aggregate([ 
    { 
     "$lookup": { 
      "from": "translations", 
      "localField": "_id", 
      "foreignField": "item_id", 
      "as": "translation" 
     } 
    }, 
    { 
     "$project": { 
      "label": 1, "items": 1, 
      "translation": { 
       "$arrayElemAt": [ 
        { 
         "$filter": { 
          "input": "$translation", 
          "as": "page", 
          "cond": { "$eq": ["$$page.lang_key", lang] } 
         } 
        }, 
        0 
       ] 
      } 
     } 
    } 
]) 
+1

たくさんありがとうございます!))) –

関連する問題