I\'m studying AngularJS and Firebase and I\'m playing with a simple ChatApp, just to understand the code.
My Firebase DB structure is like this:
\"chat\"         
        
To index this structure to allow efficient querying, you have to add an index for each user:
{
    "rules": {
        "chat": {
            "rooms": {
                ".indexOn": ["users/user1", "users/user2"]
            }
        }
    }
}
That won't be maintainable, since you're likely adding users dynamically.
As usual with NoSQL databases, this means you have to expand/adapt your data model to allow the use-case you want. Instead of querying the rooms for their users, keep a list of the rooms for each user (in addition to your current data):
"user_rooms": {
  "user1": {
    "chat1": true
  },
  "user2": {
    "chat1": true,
    "chat2": true
  }
  "user3": {
    "chat2": true
  }
Now you can look up the chat rooms for a user without even needing to query.
Also see my answer about this categorization problem in Firebase query if child of child contains a value.