code: function(doc,params,force) {
  
    if (params._path) {//is array of keys (path) to traverse depth wise in the doc
  
      var keys = params._path
      var nested = get.last_parent(doc, keys, force)
      var lastKey = keys[keys.length - 1].key || keys[keys.length -1]
      nested[lastKey] = params._value
  
    } else {//is (potentially multiple) attributes to copy
  
      var keys = Object.keys(params)
  
      for (var i in keys) {
  
        doc[keys[i]] = params[keys[i]]
  
      }
    }
    return doc
  }
docs: {
  _path: ["arr1",{y:{x:{'>':3},f:{'<=':5}},z:23},"arr2",{a:2,f:4},"x"],
  _value: 6.5
  }
  @param doc
  @param params They can come in two forms
  {nested,value} : The nested path of keys will be traversed within the doc to set the value at leaf
  (keyVal pairs} : All the attributes in attrs Object are directly copied to doc