I'm slightly worried about using mongo's object IDs. It makes it harder to ever switch to other database providers. Any chance you could generate an ID rather than using the ObjectId thing? I think for messages it would be OK to use an id derived from the date and time of the message, perhaps hashed with the username.