     case Descending(String)
     case Exists(String)
     case DoesNotExist(String)
+    case HasPrefix(key: String, prefix: String)
 }
 
 extension Constraint :Equatable {}

            case .DoesNotExist(let key):
                q.whereKeyDoesNotExist(key)
                break
            }
        }


    case .DoesNotExist(let lKey):
        switch (rhs) {
        case .DoesNotExist(let rKey) where lKey == rKey:
            return true
        default:
            return false
        }
    case .HasPrefix(key: let lKey, prefix: let lPrefix):
        switch (rhs) {
        case .HasPrefix(key: let rKey, prefix: let rPrefix) where lKey == rKey && lPrefix == rPrefix:
            return true
        default:
            return false
