2016-07-26 25 views
0

私はMeteorとMongoを教えようとしています。私はナットを運転している私の流星法の中に特定の挿入を持っています。Meteor/Mongo、配列内のオブジェクトの内側に配列を挿入

マイドキュメントオブジェクトは、次のようになります。

{ 
    _id 
    name: "name", 
    stuff: {}, 
    array: [ 
     { 
      id: 0, 
      target:[ 
       { 
        id: 0, 
        name: "1" 
       },{ 
        id: 1, 
        name: "2" 
       } 
      ] 
     },{ 
      id: 1, 
      target:[ 
       { 
        id: 0, 
        name: "A" 
       },{ 
        id: 1, 
        name: "B" 
       } 
      ] 
     } 
    ], 
} 

私は、アレイアレイ内のオブジェクトの内部にあるターゲット配列、にオブジェクトを追加しようとしています。

私はここでスタックオーバーフローで見たいくつかの事柄に基づいて、数日間にわたってさまざまなアプローチを試みました。最新の試みは次のとおりです。

Documents.update({_id: id, 'array.id': arrayId}, {$addToSet:{'array.$.target': objectToInsert}},{upsert: false, multi: false}) 

誰かが正しい方向に私を指すことができたら、私はそれを感謝します。

答えて

0

は、私はこのような何かをするのmongoクエリを知ってscroll down toパソコンへ転送が、あなたが理解scroll down toパソコンへ転送した場合今すぐ修正された配列

Document.update({_id:id},{$set:{array:theArray}) 

で文書を更新

let theArray=Document.findOne({_id:id}).array, 
arrayOfIds=_.pluck(theArray,"id"), 
index=_.indexOf(arrayOfIds,arrayId), 
theArray[index].target.push(objectTobeInserted) 

次のように行うことができます。 pluckと_.indexOfを参照することができます。underscorejs

+0

これは機能しませんでしたが、いくつかの非常に小さな構文上の誤りはありませんでした。どうもありがとうございました。 – Norl

+0

歓声..................... –

0

更新を行っている場所で問題が発生している可能性があります。これは、クライアント上にある場合は、こちらを参照してください。

Update an subdocument contained in an array contained in a MongoDB document

ソリューションは、サーバーにこれを移動することです。これは、クライアント側ではなく、プッシュする変更すると、あなたの問題が解決しない場合

また、あなたは$ addToSetの違いを見てみたいことがありかつ$ここMongoDb: Difference between $push/$addtoset

を押して、あなたは、あなたの質問に追加することができますエラーは何か_

関連する問題