userimage

MongoDB Many-to-Many Association

How would you do a many-to-many association with MongoDB?

For example; let"s say you have a Users table and a Roles table. Users have many roles, and roles have many users. In SQL land you would create a UserRoles table.

Users:

    Id

    Name


Roles:

    Id

    Name


UserRoles:

    UserId

    RoleId


userimage

Depending on your query needs you can put everything in the user document:

{name:"Joe"

,roles:["Admin","User","Engineer"]

}

To get all the Engineers, use:


db.things.find( { roles : "Engineer" } );

If you want to maintain the roles in separate documents then you can include the document's _id in the roles array instead of the name:


{name:"Joe"

,roles:["4b5783300334000000000aa9","5783300334000000000aa943","6c6793300334001000000006"]

}

and set up the roles like:


{_id:"6c6793300334001000000006"

,rolename:"Engineer"

}

Answer is