It depends on your main concern. In general, I would say to include hobbies in People, for example:
{ "_id":1, "name":"Austin", "hobbies": [ "Cars","Boats" ] }, { "_id":2, "name":"Doug", "hobbies": [] }, { "_id":3, "name":"Nick", "hobbies": [ "Chess" ] }, { "_id":4, "name":"Austin", "hobbies": [ "Cars" ] }
which will give you the opportunity to use an index with several keys on hobbies and allow such requests:
db.daCollection.find({"hobbies":"Cars"})
which will return both Austins as complete documents. Yes, I know there will be a lot of redundant entries. If you try to prevent this, model it as follows:
{ "_id": 1, "name":"Cars" },... { "_id":1, "name":"Austin", "hobbies": [ 1, ... ] }
why an additional index is needed in the hobby name field. Therefore, when you want to find every person who is in the cars, you need to find _id and request it as
db.person.find({"hobbies":1})
I think this is simpler, more intuitive and faster for most use cases if you use an attachment.