更新

2016-04-06 2 views
1

私の配列は以下の通りである:私は、「harjeet12345」としてそれらのすべてを名前を更新する必要があり更新

{ 
    "_id" : ObjectId("5704cf4da64ffd34d7285fef"), 
    "names" : [ 
     { 
      "name" : "harjeet" 
     }, 
     { 
      "name" : "harjeet123" 
     }, 
     { 
      "name" : "harjeet1234" 
     } 
    ] 
} 

私の研究はこれについてが見つかりました:https://jira.mongodb.org/browse/SERVER-1243

は、あなたが、これはMongoDBの埋め込まれた文書や文書の配列を持つ問題である知っているだけでなく、この更新

+0

に使用できるものであるuは、コレクション内のすべてのドキュメントの「名前」フィールドの「harjeet12345」すべての「名前」の配列要素に設定したいですか? – zeugor

答えて

1
var nameStr = "harjeet12345"; 
c.find().forEach(function (doc) { 
    var newNameArray = []; 
    doc.names.forEach(function (y) { 
     var newName = {name : "zeugor"} 
     newNameArray.push(newName); 
    }); 

    c.update(
     { _id: doc._id}, 
     {"$set" : {"names" : newNameArray}} 
    )  
}) 
0

を実行する方法はあります。 mongodb MongoDB jiraはその変更を承認していますが、それはまだ保留中であり、次のリリースで見ることを望みます。ここ は、あなたが今

db.yourcollection.find({}).forEach(function(tmp){ 
    names = []; 
    tmp.names.forEach(function(name){ 
     names.push({name : 'rummykhan'}) 
    }); 
    tmp.names = names; 
    db.yourcollection.save(tmp) 
})