def self.operation_and_collection_for(name, payload)
payload ||= {}
if collection_in_selector?(payload)
command_key = command_key_from_selector(payload)
name = get_name_from_selector(command_key, payload)
collection = get_collection_from_selector(command_key, payload)
else
collection = payload[:collection]
end
name = 'remove' if name.to_s == 'delete'
if self.find_one?(name, payload)
name = 'findOne'
elsif self.find_and_remove?(name, payload)
name = 'findAndRemove'
elsif self.find_and_modify?(name, payload)
name = 'findAndModify'
elsif self.create_indexes?(name, payload)
name = 'createIndexes'
elsif self.create_index?(name, payload)
name = 'createIndex'
collection = self.collection_name_from_index(payload)
elsif self.drop_indexes?(name, payload)
name = 'dropIndexes'
elsif self.drop_index?(name, payload)
name = 'dropIndex'
elsif self.re_index?(name, payload)
name = 'reIndex'
elsif self.group?(name, payload)
name = 'group'
collection = collection_name_from_group_selector(payload)
elsif self.rename_collection?(name, payload)
name = 'renameCollection'
collection = collection_name_from_rename_selector(payload)
end
[name.to_s, collection]
rescue => e
NewRelic::Agent.logger.debug("Failure during Mongo metric generation", e)
nil
end