Can't append to array using string field name [$] when performing update on array fields
mongodb, mongodb-update
Solution
You can't do the sort of 'wildcard' update of array elements that you're looking for. I think the best you can do is simultaneously set each element's `status_id` value like this:
db.mycollection.update(
{"uid":"ABCDEF"},
{$set:{
"rows.0.status_id":1,
"rows.1.status_id":1
}}, false, true);
Problem
rowsI am attempting to perform a mongodb update on each field in an array of records. An example schema is below: ``` { "_id" : ObjectId("508710f16dc636ec07000022"), "summary" : "", "uid" : "ABCDEF", "username" : "bigcheese", "name" : "Name of this document", "status_id" : 0, "rows" : [ { "score" : 12, "status_id" : 0, "uid" : 1 }, { "score" : 51, "status_id" : 0, "uid" : 2 } ] } ``` So far I have been able to perform single updates like this: ``` db.mycollection.update({"uid":"ABCDEF","rows.uid":1}, {$set:{"rows.$.status_id":1}},false,false) ``` However, I am struggling as to how to perform an update that will update all array records to a `status_id` of 1 (for instance). Below is how I imagine it should work: ``` db.mycollection.update({"uid":"ABCDEF"}, {$set:{"rows.$.status_id":1}},false,true) ``` However I get the error: can't append to array using string field name [$] I have tried for quite a while with no luck. Any pointers?