Il tuo indice in realtà dovrebbe dipendere dall'aspetto della tua query. Supponiamo che la query del tuo messaggio sia simile a questa:
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});
Quindi dovresti creare un indice sulla raccolta di messaggi specificamente per questa query. In questo caso:
db.Message.createIndex({_p_chatRoom:1, _p_user:1, isSeen: -1, _created_at: -1})
In alternativa, un indice con solo la chatroom funzionerà molto meglio di nessun indice
db.Message.createIndex({_p_chatRoom:1})
Per capire davvero quali indici costruire, dovrai leggere i documenti Mongo https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#db.collection.createIndex
Personalmente uso MLab per il mio Parse MongoDB, perché non sono molto esperto di database e in realtà hanno un analizzatore di query lento che consiglia indici basati su query comuni nella tua applicazione, quindi se non vuoi imparare i punti più fini dell'indicizzazione di MongoDB, MLab è un ottimo punto di partenza