0

在下面的文档中,我有一个array名为 imAccounts。我想要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 回答