This app has read-only access to a set of change-ringing-related MongoDB collections. Documents in a MongoDB collection look more or less like javascript objects, making them easy to work with in web apps.

The primary collection is of change-ringing methods and is updated weekly from another app. Here is an example method from the MongoDB collection:


        {
          "classification":{
            "trebleDodging":true,
            "little":false,
            "differential":false,
            "plain":false
          },
          "oldtitle":[],
          "huntBells":[1],
          "huntPath":[1,2,1,2,3,4,3,4,5,6,5,6,7,8,7,8,8,7,8,7,6,5,6,5,4,3,4,3,2,1,2,1],
          "stationaryBells":[],
          "pbOrder":[[2,3,5,7,8,6,4]],
          "symmetry":["palindromic"],
          "pnFull":[[3,4],"x",[3,4],[1,8],"x",[1,2],"x",[1,8],"x",[1,2],"x",[1,8],"x",[1,2],"x",[1,8],"x",[1,2],"x",[1,8],"x",[1,2],"x",[1,8],"x",[1,2],"x",[1,8],[3,4],"x",[3,4],[1,8]],
          "calls":["5d116300c1b7323f7a33b943"],
          "performances":["5ee855b4a0c0ea00aef1b547","5ee855b4a0c0ea00aef1b548"],
          "_id":"5d2d5cbced71425508c7fa07",
          "leadHeadCode":"m",
          "leadHead":"14263857",
          "fchGroups":"BDa",
          "ccNum":26308,
          "title":"Kent Treble Bob Major",
          "name":"Kent",
          "pn":"34-34.18-12-18-12-18-12-18,18",
          "stage":8,
          "class":"Treble Bob",
          "leadLength":32,
          "numHunts":1,
          "leadtruth":true,
          "coursetruth":true,
          "numWorking":7,
          "leadsInCourse":7,
          "__v":0
        }
      
Much of this information comes directly from the CCCBR's xml method collection, including title, name, class, classification, pn (place notation in abbreviated format), leadHead, fchGroups, numHunts, leadLength, and symmetry. "oldtitle", which is empty here, contains any earlier names for a method, particularly those which were changed when the new Framework was adopted. I've had to add these by hand so they may not be complete. "pbOrder" is an array of arrays each containing a working place bell cycle. A differential or short-course method would have multiple inner arrays; since Kent is neither there is only one inner array. "pnFull" is an array containing the unabbreviated place notation, with arrays of place numbers for changes that include places and the string "x" for cross. "calls" and "performances" are arrays containing Mongo IDs of records in other database collections. The calls are somewhat experimental; the performances are only those included in the CCCBR xml files—mostly first peals of methods. "_id" is the record's ID in this collection. "ccNum" is the method's ID on Composition Library. Method urls on complib take the form https://complib.org/method/$ID, so Kent Treble Bob Major can be found at https://complib.org/method/26308.

To search the methods collection using this app, send a GET request as in the following examples:

https://vivacious-port.glitch.me/find/methodsFind all methods in the collection
https://vivacious-port.glitch.me/find/methodFind one method in the collection
https://vivacious-port.glitch.me/find/methods?stage=5Find all doubles methods in the collection (all methods with a stage of 5)
https://vivacious-port.glitch.me/find/method?stage=5Find one doubles method in the collection
https://vivacious-port.glitch.me/find/methods?title=Buckfastleigh+Surprise+MajorFind all methods in the collection with title "Buckfastleigh Surprise Major." Since method titles are all unique, this should only return one result, but it will be in an array. This is a case-sensitive search.
https://vivacious-port.glitch.me/find/method?title=Buckfastleigh+Surprise+MajorFind one method in the collection with title "Buckfastleigh Surprise Major". This results in a single object not in an array.
https://vivacious-port.glitch.me/find/methods?stage=6&class=PrincipleFind all minor principles in the collection. Classes are also case sensitive.
https://vivacious-port.glitch.me/find/methods?stage=6&class=Bob&symmetry=palindromicFind all minor Bob methods with palindromic symmetry in the collection. These methods may also have the other two symmetry types—since the value of "symmetry" is an array, this search only looks for arrays that contain "palindromic".

Replacing "find" with "count" (and "methods" with "method", singular) in the above searches will return the number of matching methods.

All MongoDB query operators are available as well, discussed at https://docs.mongodb.com/manual/reference/operator/query/. These must be URL encoded so that the query { title: { '$regex': '^lancashire surprise major', '$options': 'i' } } becomes "https://vivacious-port.glitch.me/method?title%5B%24regex%5D=%5Elancashire+surprise+major&title%5B%24options%5D=i".