2016-09-21 10 views
0

ここに私のコードです。は、MongoDBのサブフィールドの式を追加できません。

Cart 
     .aggregate() 
     .match(where) 
     .lookup({ 
      from: "product_catelogs", 
      foreignField: "_id", 
      localField: "product_id", 
      as: "product" 
     }) 
     .project({ 
      product: { 
      $arrayElemAt: ["$product", 0] 
      }, 
      "product.custom_field": { 
      $add: [1, 1] 
      }, 
      product_quantity: 1, 
      product_variant: 1, 
      guest_token: 1, 
      user_id: 1, 
      product_id: 1, 
     }) 

ここでは、製品オブジェクトでカスタムフィールドを追加します。私はそうしようとしているときには、私はこの種のエラーを、直面しています

すでにフィールド全体に適用される表現 がありますので、製品のサブフィールドの式を追加することはできません

私を助けてください。

+0

両方のスキーマのサンプルドキュメントを追加してください。 – notionquest

答えて

1

これについては、productのフィールドが個別に新しいフィールドと共に投影される別のプロジェクトパイプラインを追加することが唯一の方法です。例を次に示します。

Cart.aggregate() 
    .match(where) 
    .lookup({ 
     "from": "product_catelogs", 
     "foreignField": "_id", 
     "localField": "product_id", 
     "as": "product" 
    }) 
    .project({ 
     "product": { "$arrayElemAt": ["$product", 0] }, 
     "product_quantity": 1, 
     "product_variant": 1, 
     "guest_token": 1, 
     "user_id": 1, 
     "product_id": 1, 
    }) 
    .project({ 
     "product.field1": "$product.field1", // <-- change to suit your actual schema 
     "product.field2": "$product.field2", 
     "product.field3": "$product.field3", 
     "product.field4": "$product.field4", 
     "product.custom_field": { "$add": ["$product.field4", "$product.field5"] }, 
     "product_quantity": 1, 
     "product_variant": 1, 
     "guest_token": 1, 
     "user_id": 1, 
     "product_id": 1, 
    }) 
+0

ya ...それは働いています。とにかくこれ以外のところにはあります。コードの行が増えているからです。私は尋ねているだけです。しかしそれはうまくいっています... !!!どうもありがとうございました。 –

+1

私は他の方法はないと思います – chridam

関連する問題