code: func (t *SimpleChaincode) queryMarbles(stub shim.ChaincodeStubInterface, args []string) pb.Response {
  
  	//   0
  	// "queryString"
  	if len(args) < 1 {
  		return shim.Error("Incorrect number of arguments. Expecting 1")
  	}
  
  	queryString := args[0]
  
  	queryResults, err := getQueryResultForQueryString(stub, queryString)
  	if err != nil {
  		return shim.Error(err.Error())
  	}
  	return shim.Success(queryResults)
  }
docs: // ===== Example: Ad hoc rich query ========================================================
  // queryMarbles uses a query string to perform a query for marbles.
  // Query string matching state database syntax is passed in and executed as is.
  // Supports ad hoc queries that can be defined at runtime by the client.
  // If this is not desired, follow the queryMarblesForOwner example for parameterized queries.
  // Only available on state databases that support rich query (e.g. CouchDB)
  // =========================================================================================