I'm assuming that key
is the integer index of the object you want to update in the position
array? If so, you'll need to get the position array, update it and then set it again. Try this:
var position = this.model.get('position');
position[key][attribute] = value;
this.model.set('position', position);
Just to clarify, the reason why is because Backbone.Model.set() only accepts two forms. Either a hash of attributes to set, or the name of a specific attribute and its value to set. But there is no syntax that would allow you to specify an indexed item of an array, so you have to get the whole thing, update it then set it.