2016-09-07 4 views
0

私はサーバー側でこのアップデートを行うためのより良い方法を探しています: segmentos.0 ... segmentos.1 ... segmentos.2 ... segmentos.3は番号を変更しただけです。私は "for"ループとsegmentos.iを使用しようとしましたが、うまくいきませんでした。Meteor - コレクション、サーバー側の配列を更新するより良い方法

アイデア?

Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos.0.eficienciaPicked":0 }, },); 
Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos.1.eficienciaPicked":0}, },); 
Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos.2.eficienciaPicked":0}, },); 
Partidas.update({_id:id, "usuarios.name" : usuarioName}, {"$set": {"usuarios.$.segmentos.3.eficienciaPicked":0 }, },); 

答えて

0
Partidas.update(
    {_id:id, "usuarios.name" : usuarioName}, 
    { $set: 
     { "usuarios.$.segmentos": 
      [ { eficienciaPicked: 0 }, { eficienciaPicked: 0 }, { eficienciaPicked: 0 }, { eficienciaPicked: 0 } ] 
     } 
    } 
); 

1回のアップデートで同じことを実現します。

配列の要素数が動的な場合は、更新前にforループを使用して変数に構築し、変数を$に設定します。

+0

「何か」についてもう少し明示してください。私は何かを試してみましたが、うまくいかなかったのですか? Partidas.update({_ id:id、 "usuarios.name":usuarioName}、{"$ set":{"usuarios。$。segmentos" [{eficienciaPicked:0}、{eficienciaPicked:0}、{eficienciaPicked:0 }、{eficienciaPicked:0}、{eficienciaPicked:0}]、}}、); – Satjeet

+0

$は "usuarios"の配列からconsult:_id: "usuarios.name":usuarioNameに答えた最初のユーザーをとります。 私のDBはPartidas.usuarios [ユーザー] .segmentos [セグメント]に似ています。だから私が探しているユーザーの中身を入れても、このユーザーは5つのセグメントの配列を持つ "segmentos"を持っていて、このセグメントの内部に入っていたいと思っています – Satjeet

+0

そのデータモデルでは、 –

関連する問題