Seu índice, na verdade, deve depender da aparência da sua consulta. Suponha que sua consulta de mensagem tenha esta aparência:
var query = new Parse.Query("Message");
query.equalTo("chatRoom", aChatRoom);
query.equalTo("user", someUser);
query.equalTo("isSeen", false);
query.descending("createdAt");
query.find().then(function(results){//whatever});
Em seguida, você precisaria criar um índice na coleção Message especificamente para essa consulta. Nesse caso:
db.Message.createIndex({_p_chatRoom:1, _p_user:1, isSeen: -1, _created_at: -1})
Como alternativa, um índice com apenas a sala de bate-papo terá um desempenho muito melhor do que nenhum índice
db.Message.createIndex({_p_chatRoom:1})
Para realmente entender quais índices construir, você precisará ler alguns documentos do Mongo https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#db.collection.createIndex
Eu pessoalmente uso o MLab para meu Parse MongoDB, porque não tenho muito conhecimento sobre bancos de dados, e eles realmente têm um analisador de consultas lento que recomenda índices com base em consultas comuns em seu aplicativo, portanto, se você não quiser aprender os pontos mais sutis de indexação do MongoDB, então o MLab é um ótimo lugar para começar