2017-09-11 15 views
0

ここでStackoverflowについていくつかの記事を読んでいますが、「一般的な」答えは見つかりませんでした。MongoDBの配列のObject-Elementを更新してください

は、私はこのような構造を考えてみましょう:

今では実際には "45"

私が試したので、私は編集ピーターズ重量にしたい

{ personsName: "Bob", children: [ {childsName: "Alice", age: "9", weight: "40"} {childsName: "Peter", age: "12", weight: "80"} ] } 

.update(
    { personsName: "Bob", children.childsName: "Peter"}, 
    { 
     $set: {children: {weight :"45" } } 
    } 
    ) 

私にとってこれは機能するはずです...更新"Peter"という名前の "Bob"に属するすべての子供の子供の体重 "45" ... インデックスで配列を更新するいくつかの解決策を見ましたが、私たちはインデックスを知っていないと考えています。 childsプロパティ "childsName"によって更新されます。

これを行う一般的な方法は何ですか?

+0

を参照してください。https://jira.mongodb.org/browse/SERVER-1243 –

+0

これは素晴らしいですが、残念ながら私はまだ古いバージョンを使用しています。私はMEAN-Projectでこれを変更したくありません。現在のバージョンのオプションもある必要があります。 –

+0

もしあれば、チケットは最初に作成されませんでした。あなたがアプローチの限界に満足しているなら、私の答えを見てください。 –

答えて

0

あなたはボブがわずか1ピーターを持っていることを確認している場合は、次のようpositional operatorを使用することができます。

.update(
    { personsName: "Bob", "children.childsName": "Peter"}, 
    { 
    $set: {"children.$.weight" :"45" } 
    } 
) 

をオペレータのみが最初に一致したサブドキュメントを更新していることに注意してください、そして1と同じくらい深くしてくださいは、レベル。

+0

これは簡単でした - ありがとう!!!私は '$' –

関連する問題