0

以下のドキュメントには、arrayimAccountsという名前があります。update()その中のオブジェクトにしたいarray。どうやってやるの?

{
"_id" : ObjectId("503c55da1c192a530b000001"), 
"imAccounts" : [
  { 
    "accountType"     : "Windows",  
    "accountName"     : "rwqerqw",  
    "accountPassword" : "erqwerwe" 
  }, 
  {     
    "accountType"     : "Yahoo",    
    "accountName"     : "rwqerqw",  
    "accountPassword" : "erqwerwe" 
  }]
}
4

1 に答える 1

1

このドキュメント構造では、位置演算子($)を使用して配列内のオブジェクトを更新できます。

db.myarray.update(
    { // Match criteria
        "_id" : ObjectId("503c55da1c192a530b000001"),
        'imAccounts.accountType': 'Yahoo',
    },
    { // Update first matched item using positional operator $
        '$set' : { 'imAccounts.$.password':'sekrit'}
    }
)

位置演算子は現在、クエリで最初に一致したアイテムにのみ適用されることに注意してください。

于 2012-08-28T07:12:25.450 に答える