'Get a list of all the collection names in this database.
:Parameters:
- `include_system_collections` (optional): if ``False`` list
will not include system collections (e.g ``system.indexes``)'

def collection_names(self, include_system_collections=True):

    with self.__client._socket_for_reads(ReadPreference.PRIMARY) as (sock_info, slave_okay):
        wire_version = sock_info.max_wire_version
        results = self._list_collections(sock_info, slave_okay)
    names = [result['name'] for result in results]
    if (wire_version <= 2):
        names = [n[(len(self.__name) + 1):] for n in names if (n.startswith((self.__name + '.')) and ('$' not in n))]
    if (not include_system_collections):
        names = [name for name in names if (not name.startswith('system.'))]
    return names
