code: func (builder *Builder) InsertAll(collection string, fields []string, allchanges []map[string]interface{}) (string, []interface{}) {
  	var buffer bytes.Buffer
  	var args = make([]interface{}, 0, len(fields)*len(allchanges))
  
  	buffer.WriteString("INSERT INTO ")
  
  	buffer.WriteString(builder.config.EscapeChar)
  	buffer.WriteString(collection)
  	buffer.WriteString(builder.config.EscapeChar)
  
  	sep := builder.config.EscapeChar + "," + builder.config.EscapeChar
  
  	buffer.WriteString(" (")
  	buffer.WriteString(builder.config.EscapeChar)
  	buffer.WriteString(strings.Join(fields, sep))
  	buffer.WriteString(builder.config.EscapeChar)
  	buffer.WriteString(") VALUES ")
  
  	for i, changes := range allchanges {
  		buffer.WriteString("(")
  
  		for j, field := range fields {
  			if val, exist := changes[field]; exist {
  				buffer.WriteString(builder.ph())
  				args = append(args, val)
  			} else {
  				buffer.WriteString("DEFAULT")
  			}
  
  			if j < len(fields)-1 {
  				buffer.WriteString(",")
  			}
  		}
  
  		if i < len(allchanges)-1 {
  			buffer.WriteString("),")
  		} else {
  			buffer.WriteString(")")
  		}
  	}
  
  	if builder.returnField != "" {
  		buffer.WriteString(" RETURNING ")
  		buffer.WriteString(builder.config.EscapeChar)
  		buffer.WriteString(builder.returnField)
  		buffer.WriteString(builder.config.EscapeChar)
  	}
  
  	buffer.WriteString(";")
  
  	return buffer.String(), args
  }
docs: // InsertAll generates query for multiple insert.